Top

メモ書き

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’] で呼び出しているところにも注目です。