概要
get_sub_field_object
関数は、Advanced Custom Fields (ACF) プラグインにおいて特定のサブフィールドの設定を返します。この関数は、ACFのリピーターフィールドや柔軟なコンテンツフィールドといった、複雑なカスタムフィールドを扱う際に非常に便利です。以下のような場合に使用されることが多いです:
- サブフィールドの設定情報を取得したいとき
- サブフィールドのラベルや種類を参照したいとき
- フロントエンドでのカスタム表示のための設定を確認したいとき
- 条件に基づいて特定のサブフィールドを表示したいとき
- メタデータに基づいて異なるフィールドの処理をしたいとき
- ACFの設定情報にアクセスしてカスタマイズを行いたいとき
構文
get_sub_field_object( $sub_field_key, $post_id );
パラメータ
- $sub_field_key (string) : 取得したいサブフィールドのキー(例:
'field_1234567890abc'
)。 - $post_id (int|string) : オプションのパラメータ。特定の投稿のIDで、指定しない場合は現在の投稿のIDが使用されます。
戻り値
- 返される値は、サブフィールドの設定情報を含む配列です。配列には、フィールドのキー、ラベル、値、フォーマットなどの情報が含まれます。
ACF バージョン
- バージョン:5.x 以降
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: サブフィールドのラベルを取得する
$sub_field = get_sub_field_object('field_1234567890abc');
if ($sub_field) {
echo $sub_field['label'];
}
このサンプルコードは、指定されたサブフィールドのラベルを取得して表示します。
サンプル2: 特定の投稿に関連したサブフィールドを取得する
$sub_field = get_sub_field_object('field_1234567890abc', $post_id);
if ($sub_field) {
echo $sub_field['value'];
}
このサンプルコードは、特定の投稿IDに関連するサブフィールドの値を取得して表示します。
サンプル3: サブフィールドが画像の時に処理を行う
$sub_field = get_sub_field_object('field_1234567890abc');
if ($sub_field['type'] === 'image') {
echo wp_get_attachment_image($sub_field['value'], 'full');
}
このサンプルコードは、サブフィールドが画像タイプの場合にその画像を表示します。
サンプル4: サブフィールドの設定を変更する
$sub_field = get_sub_field_object('field_1234567890abc');
if ($sub_field) {
$sub_field['label'] = '新しいラベル';
// このコードは、ラベルを変更することを示唆していますが、実際に保存するコードは含まれていません。
}
このサンプルコードは、サブフィールドのラベルを新しいラベルに変更する意図があります。
サンプル5: サブフィールドの選択肢を条件付きで表示する
$sub_field = get_sub_field_object('field_1234567890abc');
if (in_array($sub_field['value'], ['option1', 'option2'])) {
echo '特定のオプションが選択されています。';
}
このサンプルコードは、サブフィールドの値が特定のオプションのいずれかである場合にメッセージを表示します。