ACFでよく使う「繰り返し」フィールドの出力方法をメモ。
以前までは買い切りでしたが、現在はサブスクの有料コンテンツになっています。
有料なだけあって優秀なフィールドです。
Advanced Custom Fieldsの繰り返しフィールドの出力方法
早速結論から。
<?php if(have_rows('repeater_field')): ?>
<ul>
<?php
while(have_rows('repeater_field')): the_row();
$sub_field = get_sub_field('sub_field');
?>
<?php if (!empty($sub_field)) :?>
<li><?php echo esc_html($sub_field);?></li>
<?php endif; ?>
//他サブフィールドもここに記述する
<?php endwhile; ?>
</ul>
<?php endif; ?>
それでは解説。
「繰り返し」のフィールド名が repeater_field 、サブフィールドを sub_field としています。
while文内が繰り返し出力されるところになります。
7〜9行目のように、繰り返しフィールドの使い方によっては、入力がない場合は表示しないようにした方が良いので、if文でサブフィールドの中が空かどうか条件分岐しています。
foreachでループ処理を行う方法
ちなみに、foreachで出力することもできます。
<?php
$repeater_fields = get_field('repeater_fields');
if ($repeater_fields):
?>
<ul>
<?php foreach ($repeater_fields as $repeater_field) :?>
<li>
<dl>
<dt>
<?php echo esc_html( wp_strip_all_tags($repeater_field['sub_field_ttl'])); ?>
</dt>
<dd>
<?php echo nl2br(esc_textarea($repeater_field['sub_field_txt'])); ?>
</dd>
</dl>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
サブフィールドを $repeater_field[‘sub_field_ttl’] で呼び出しているところにも注目です。