advanced custom fields(アドバンスドカスタムフィールド)

advanced custom fields(アドバンスドカスタムフィールド)の出力の仕方

advanced custom fieldsの出力の仕方を記録しておきます。

アドバンスドカスタムフィールドの設定は、画面を見れば概ね見当が付くと思いますが、その出力、表示方法はコマンドがわからないと書けないので。

親フィールドと子フィールドでは、データの取得コマンドが違う

この場合、フィールドグループの一番上にあるフィールドを親フィールドとします。
つまり、フィールドグループを選択して見えるフィールドが親フィールドです。

フィールドグループの一覧

「文章+画像」グループの一番上のフィールド一覧


上の例でいえば、親フィールドは、stmt と pict になります。


フィールドグループ名、グループ1の親フィールドは1つ。
「グループ1」の親フィールドが「group」タイプのフィールドで「グループ1」の下に子供がいます。


advanced custom fields (アドバンスドカスタムフィールド)の親フィールドの読み込み

親フィールドの値を読み込むコマンドは get_field(‘フィールド名’) となります。

前述の場合ならば、
$stmt = get_field('stmt');
$pict = get_field('pict');


前述の グループ1は、group タイプなので 子供のフィールドが存在するか確認します。
もしも存在しているならば、データの取得を行うということになります。
if( has_sub_field('group1') ){
子供のフィールドデータを取得
}


子持ちの親フィールドのタイプは3種類あります。
・グループフィールド
・繰り返しフィールド
・柔軟フィールド

グループフィールドタイプの子供のフィールのデータの取得の仕方

if( has_sub_field('group1') ){
$group1child = get_sub_field('group1child');

}



繰り返しフィールドタイプの子供のフィールドのデータの取得の仕方

繰り返しフィールドの子供のデータ取得は以下のようになります。
if( have_rows('repeat1') ){
while(have_rows('repeat1')){
the_row();
$repeat1child1 = get_sub_field ( 'repeat1child1' );

}
}

※たとえ、repeat1 が誰かの子供だとしても繰り返しタイプは、have_sub_row とかいうコマンドはありませんのでこのループで表示できます。


柔軟フィールドタイプの子供のフィールドのデータの取得の仕方

while( has_sub_field('frex') ){
if( get_row_layout() == 'frex1' ){
$frex1pct = the_sub_field('frex1pct');
$frex1txt = the_sub_field('frex1txt');
}elseif(get_row_layout() == 'frex2') : ?>
$frex1txt = the_sub_field('frex2txt');
$frex1pct = the_sub_field('frex2pct ');
$frex1stm = the_sub_field('frex2stm ');
}
}


advanced custom fields (アドバンスドカスタムフィールド)の場合、日本語で開設されたより詳しいサイトがなくて、
この柔軟フィールドタイプの情報がとりにくかったりします。

なのでもう少し詳しくは別ページにまとめてありますので、
もしも必要であれば、⇒advanced custom fields (アドバンスドカスタムフィールド)の柔軟フィールドについて

advanced custom fieldsの出力の仕方のまとめ

・親フィールドが普通のタイプの場合(レイアウトタイプ以外)
 get_field(‘フィールド名’)

・グループフィールド
 if( has_sub_field(‘親フィールド名’) ){
  get_sub_field(‘子供フィールド名’);

・親フィールドが繰り返しフィールドタイプの場合
 if( has_sub_field(‘親フィールド名’) ){
  the_row();
  get_sub_field(‘子供フィールド名’);

・柔軟フィールド
 while( has_sub_field(‘親フィールド名’) ){
  if( get_row_layout() == ‘レイアウト名’ ){ //
    // レイアウトに所属する子供フィールドを読み込む
$frex1pct = the_sub_field(‘子供フィールド名’);

子持ちのフィールドの場合、get_field もしくは、 has_sub_field で子供を確認して、
get_sub_field もしくは the_row 後、get_row_layout でレイアウト確認後に get_sub_field で取り込むことになります。



スポンサードリンク

関連記事一覧