ACFのリピーターフィールドでラジオボタンの出力について

wordpressプラグインでおなじみの、ACF(advanced Custom fields)

リピーターフィールド内のラジオボタンで、ラベルと値を出力しようとしてちょっと戸惑ったので備忘録です。

前提

まず、ACFのカスタムフィールドの設定は、

repeater_field_nameというリピーターフィールドの中に、btn_nameというラジオボタンのフィールドを設定し、

選択肢を、

3f : 3F
loft : ロフト
2f-only : 2Fまで

と設定しました。
で、「2f-only : 2Fまで」の時は値を表示しないようにしたかったのです。

上手くいかなかった出力方法

通常通りのリピーターフィールドとラジオボタンの出力のコードを書きました。


<?php
if( have_rows('repeater_field_name') ):
while ( have_rows('repeater_field_name') ) : the_row();
//ラジオボタンのデータを代入
$field = get_sub_field_object(‘field_name’);
$value = get_sub_field(‘field_name’);
$label = $field[‘choices’][ $value ];
?>

<?php if($value <> '2f-only'):?>
<p><?php echo $label; ?>
<?php endif;
endwhile;
else :
// no rows found
endif;
?>

これだと「Array」と表示されるだけ。まいったなぁと思ったときは頑張ってDocumentationを確認しましょう。

上手くいった出力方法

調べてみたら、get_sub_field_objectは、has_sub_fieldループ内で使用する必要があるようです。

なので、次のようにコードを修正。


<?php
if( get_field('repeater_field_name') ):
while ( has_sub_field('repeater_field_name') ) :
//ラジオボタンのデータを代入
$field = get_sub_field_object(‘field_name’);
$btn_value = $field['value'];
$value = $btn_value['value'];
$label = $btn_value[‘label’];
?>

<?php if($value <> '2f-only'):?>
<p><?php echo $label; ?>
<?php endif;
endwhile;
else :
// no rows found
endif;
?>

ここまで至るのに諸々ありましたが、迷ったときはprint_r()関数で配列を全て出力してみると糸口をつかめます。

出力した配列

Array
(
[ID] => 6024
[key] => field_58e4c643fc29f
[label] => 3F または ロフト
[name] => repeater_field_name_0_field_name
[prefix] => acf
[type] => radio
[value] => Array
(
[value] => 2f-only
[label] => 2Fのみ
)

[menu_order] => 3
[instructions] => 3階建てまたはロフトをお選びください。
[required] => 0
[id] =>
[class] =>
[conditional_logic] => 0
[parent] => 6020
[wrapper] => Array
(
[width] =>
[class] =>
[id] =>
)

[_name] => field_name
[_prepare] => 0
[_valid] => 1
[choices] => Array
(
[3f] => 3F
[loft] => ロフト
[2f-only] => 2Fのみ
)

[allow_null] => 0
[other_choice] => 0
[save_other_choice] => 0
[default_value] => ロフト
[layout] => horizontal
[return_format] => array
)

誰かのお役にたれてば幸いです。

参考:ACF Docmentation

この記事を書いた人

木村 太一

ドットワンの代表です。1979年生まれ。3女の父。ゴルフと筋トレが趣味。立川にあるキヤノン代理店に就職後、1万件以上飛び込み営業したのち独立。たくさんの企業を見てきた経験と自分自身も零細企業の経営者ということを活かし、相手の立場に立ったDX推進、ITコンサルを行っております。

お気軽にお問い合わせください

ホームページ、ネットショップの集客方法から、IT機器や、顧客管理、採用に関することまでご相談ください。
WEBマーケティングのノウハウを生かして、お客様のお悩みを解決します。