概要
get_sub_field
関数は、Advanced Custom Fields (ACF)プラグインで使用される関数で、特定のサブフィールドの値を返します。この関数は、特にACFのリピーターフィールドやフレキシブルコンテンツフィールド内のサブフィールドにアクセスする際に役立ちます。
よく使われる機能の例
- リピーターフィールド内のデータ取得
- フレキシブルコンテンツフィールドの特定の要素の取得
- 複数のサブフィールドを持つオプションページのデータ取得
- 投稿やページのカスタムデータ表示
- カスタムテンプレート内での取引情報やプロジェクトデータの表示
- フィールドグループからのデータ取り出しと表示
構文
$value = get_sub_field( $selector );
パラメータ
$selector
(string) : 取得したいサブフィールドのフィールド名。
戻り値
- サブフィールドの値(データ型はフィールドの設定に依存)。
ACFのバージョン
- 使用可能なACFのバージョン: 5.0以降
WordPressのバージョン
- 使用可能な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
// リピーターフィールド内の特定のサブフィールドのデータを表示
if( have_rows('projects') ):
while( have_rows('projects') ): the_row();
$project_name = get_sub_field('project_name');
echo '<p>' . esc_html($project_name) . '</p>';
endwhile;
endif;
このサンプルコードは、リピーターフィールド内の各プロジェクトの名前を取得し、表示します。
サンプルコード2
// フレキシブルコンテンツフィールドから特定のサブフィールドの値を取得
if( have_rows('content_blocks') ):
while( have_rows('content_blocks') ): the_row();
if( get_row_layout() == 'text_block' ):
$text = get_sub_field('text');
echo '<div>' . esc_html($text) . '</div>';
endif;
endwhile;
endif;
このサンプルコードは、フレキシブルコンテンツフィールド「content_blocks」の中から「text_block」レイアウトを確認し、対応するテキストを取得して表示します。
サンプルコード3
// オプションページから特定のサブフィールドの値を取得
$value = get_sub_field('site_settings', 'option');
if( $value ) {
echo '<p>サイト設定: ' . esc_html($value) . '</p>';
}
このサンプルコードは、オプションページフィールドから「site_settings」というサブフィールドの値を取得して表示します。
サンプルコード4
// 投稿内のカスタムデータを表示
$post_id = get_the_ID();
if( have_rows('custom_data', $post_id) ):
while( have_rows('custom_data', $post_id) ): the_row();
$custom_value = get_sub_field('data_field');
echo '<div>カスタムデータ: ' . esc_html($custom_value) . '</div>';
endwhile;
endif;
このサンプルコードは、特定の投稿内のカスタムデータをリピーターフィールドから取得し、表示します。
サンプルコード5
// カスタムテンプレート内でのサブフィールド表示
while( have_posts() ) : the_post();
$sub_value = get_sub_field('custom_sub_field');
if( $sub_value ):
echo '<p>' . esc_html($sub_value) . '</p>';
endif;
endwhile;
このサンプルコードでは、カスタムテンプレートループ内で「custom_sub_field」の値を取得し、存在する場合に表示します。