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