advanced custom fields(アドバンスドカスタムフィールド)の出力の仕方
advanced custom fieldsの出力の仕方を記録しておきます。
アドバンスドカスタムフィールドの設定は、画面を見れば概ね見当が付くと思いますが、その出力、表示方法はコマンドがわからないと書けないので。
つまり、フィールドグループを選択して見えるフィールドが親フィールドです。
フィールドグループの一覧
「文章+画像」グループの一番上のフィールド一覧
上の例でいえば、親フィールドは、stmt と pict になります。
フィールドグループ名、グループ1の親フィールドは1つ。
「グループ1」の親フィールドが「group」タイプのフィールドで「グループ1」の下に子供がいます。
前述の場合ならば、
前述の グループ1は、group タイプなので 子供のフィールドが存在するか確認します。
もしも存在しているならば、データの取得を行うということになります。
子持ちの親フィールドのタイプは3種類あります。
・グループフィールド
・繰り返しフィールド
・柔軟フィールド
繰り返しフィールドタイプの子供のフィールドのデータの取得の仕方繰り返しフィールドの子供のデータ取得は以下のようになります。
アドバンスドカスタムフィールドの設定は、画面を見れば概ね見当が付くと思いますが、その出力、表示方法はコマンドがわからないと書けないので。
親フィールドと子フィールドでは、データの取得コマンドが違う
この場合、フィールドグループの一番上にあるフィールドを親フィールドとします。つまり、フィールドグループを選択して見えるフィールドが親フィールドです。
フィールドグループの一覧
「文章+画像」グループの一番上のフィールド一覧
上の例でいえば、親フィールドは、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 で取り込むことになります。
if( have_rows('repeat1') ){
while(have_rows('repeat1')){
the_row();
$repeat1child1 = get_sub_field ( 'repeat1child1' );
:
}
}
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 ');
}
}