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

概要

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」の値を取得し、存在する場合に表示します。

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


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