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

概要

get_field_objectsは、特定の投稿に保存されているすべてのフィールドの設定を返します。この関数は、Advanced Custom Fields (ACF)プラグインの一部として提供されており、カスタムフィールドの情報を取得する際に非常に有用です。この関数を使用することにより、特定の投稿やページに関連付けられたカスタムフィールドのデータにアクセスできます。

主な使用例:
1. 投稿またはページのカスタムフィールドを表示する
2. 管理画面でフィールドをカスタマイズする
3. フィールドの値を条件にした表示を行う
4. フィールドを使ったカスタムクエリの作成
5. ACFのデータをJSON形式でエクスポートする
6. カスタムテンプレートでのフィールドデータの利用

構文

get_field_objects( $post_id = false );

パラメータ

  • $post_id (int | false) – 取得するフィールドの投稿 ID。デフォルトは現在の投稿の ID。

戻り値

  • (array | false) – フィールドオブジェクトの配列。フィールドが存在しない場合は false を返します。

使用可能なACFバージョン

  • ACFバージョン: 5.x以降

使用可能なWordPressバージョン

  • WordPressバージョン: 4.x以降

サンプルコード

サンプルコード1: 特定の投稿のカスタムフィールドを取得

このコードは、特定の投稿(投稿IDが123)のカスタムフィールドを取得し、その値を表示します。

$fields = get_field_objects(123);
if( $fields ) {
    foreach( $fields as $field ) {
        echo $field['label'] . ': ' . $field['value'] . '<br>';
    }
}

サンプルコード2: 現在の投稿のカスタムフィールドをループで表示

このコードでは、現在の投稿に保存されているカスタムフィールドをすべてループし、そのラベルと値を表示します。

$fields = get_field_objects();
if( $fields ) {
    foreach( $fields as $field ) {
        echo '<h2>' . esc_html($field['label']) . '</h2>';
        echo esc_html($field['value']);
    }
}

サンプルコード3: 投稿があるか確認してからフィールドを取得

このコードでは、投稿が存在する場合にのみカスタムフィールドを取得し、項目を表示します。

$post_id = get_the_ID();
if( $post_id ) {
    $fields = get_field_objects($post_id);
    if( $fields ) {
        echo '<ul>';
        foreach( $fields as $field ) {
            echo '<li>' . esc_html($field['label']) . ': ' . esc_html($field['value']) . '</li>';
        }
        echo '</ul>';
    }
}

サンプルコード4: カスタムフィールドをJSON形式で取得

このコードは、カスタムフィールドをJSON形式で取得し、JavaScriptで利用できるようにします。

$post_id = get_the_ID();
$fields = get_field_objects($post_id);
if( $fields ) {
    echo '<script>var fieldData = ' . json_encode($fields) . ';</script>';
}

サンプルコード5: ACFフィールドの存在を確認する

このコードでは、指定されたカスタムフィールドが存在するかどうかを確認し、存在する場合のみその値を表示します。

$post_id = get_the_ID();
$fields = get_field_objects($post_id);
if( $fields && isset($fields['custom_field_name']) ) {
    echo 'Custom Field Value: ' . esc_html($fields['custom_field_name']['value']);
}

この関数のアクションでの使用可能性

アクション 使用例
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

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


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