プラグインAdvanced custom fields(ACF)のget_fields関数の使用方法・解説

概要

get_fields 関数は、特定の投稿のフィールド値の配列 (名前 => 値) を返します。この関数は、特定のカスタムフィールドのデータを取得する際に非常に便利です。主に以下のような機能を実装する際に使用されます。

  1. カスタム投稿タイプの詳細情報を表示する
  2. ショートコードの作成に伴うデータ retrieval
  3. テンプレート内でのカスタムフィールドの表示
  4. ウィジェットやサイドバーでカスタムデータを表示する
  5. 特定の条件に基づくデータフィルタリング
  6. 一括更新やリスト表示時のデータの取得

構文

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>';
    }
}

このコードは、繰り返しフィールドを持つカスタムフィールドを対象にして、それぞれのサブフィールドの値を表示します。

この関数について質問する


上の計算式の答えを入力してください