概要
get_fields
関数は、特定の投稿のフィールド値の配列 (名前 => 値) を返します。この関数は、特定のカスタムフィールドのデータを取得する際に非常に便利です。主に以下のような機能を実装する際に使用されます。
- カスタム投稿タイプの詳細情報を表示する
- ショートコードの作成に伴うデータ retrieval
- テンプレート内でのカスタムフィールドの表示
- ウィジェットやサイドバーでカスタムデータを表示する
- 特定の条件に基づくデータフィルタリング
- 一括更新やリスト表示時のデータの取得
構文
get_fields( $post_id );
パラメータ
$post_id
(int) – 投稿の ID。指定がない場合は、現在の投稿が使用されます。
戻り値
- カスタムフィールドのデータを含む連想配列。フィールド名をキー、フィールド値をバリューとして返します。
使用可能なバージョン
- Advanced Custom Fields (ACF) バージョン: 5.0 以降
- WordPress バージョン: 4.0 以降
この関数のアクションでの使用可能性
アクション | 使用可能 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | 〇 |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | 〇 |
wp | |
template_redirect | 〇 |
get_header | 〇 |
wp_head | 〇 |
サンプルコード
サンプル 1: 投稿のカスタムフィールドを取得して表示
$post_id = get_the_ID();
$custom_fields = get_fields($post_id);
if ($custom_fields) {
foreach ($custom_fields as $key => $value) {
echo '<p>' . esc_html($key) . ': ' . esc_html($value) . '</p>';
}
}
このサンプルは、現在の投稿のIDを取得し、そのIDに関連するカスタムフィールドを取得してそれぞれを表示します。
サンプル 2: 特定のフィールドだけを取得して表示
$post_id = 42; // 特定の投稿 ID
$custom_field_value = get_fields($post_id);
echo '特定のフィールドの値: ' . esc_html($custom_field_value['field_name']);
このコードは、特定の投稿IDから特定のカスタムフィールドの値を取得し、表示します。
サンプル 3: ループ内でのフィールド情報の取得
if (have_posts()) {
while (have_posts()) {
the_post();
$fields = get_fields();
if ($fields) {
echo '<h2>' . get_the_title() . '</h2>';
foreach ($fields as $key => $value) {
echo '<p>' . esc_html($key) . ': ' . esc_html($value) . '</p>';
}
}
}
}
この例では、投稿ループ内で各投稿のカスタムフィールドを取得し、タイトルと一緒に表示します。
サンプル 4: カスタムフィールドを配列に格納
$post_id = get_the_ID();
$custom_fields_array = get_fields($post_id);
if ($custom_fields_array) {
$custom_field_list = array_keys($custom_fields_array);
print_r($custom_field_list); // カスタムフィールドの名前のリストを表示
}
このサンプルは、取得したカスタムフィールドの名前を配列として格納し、表示します。
サンプル 5: 繰り返しフィールドの処理
$post_id = get_the_ID();
$repeater_fields = get_fields($post_id);
if (!empty($repeater_fields['repeater_field'])) {
foreach ($repeater_fields['repeater_field'] as $row) {
echo '<p>' . esc_html($row['sub_field_name']) . '</p>';
}
}
このコードは、繰り返しフィールドを持つカスタムフィールドを対象にして、それぞれのサブフィールドの値を表示します。