概要
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 |