[ACF]繰り返しフィールドの出力について

有料プラグインのやつ。

繰り返しっていうのは

通常のACFは予め作成したカスタムフィールドに入力して出力っていうやつ。
別途機能である繰り返しフィールドは、フィールドグループ上でフォーマットを生成しておいて、各記事作成ページ上でその数を調整できる。

例えば商品情報とかで物によって項目名を変えたいとき、「項目名」「内容」で繰り返しを作っておけば、数も項目も都度変更できる。

繰り返しの方法(while)

繰り返しの構文はいくつか種類があるけど、wpで割とポピュラーなのがwhile。
こんな感じで使う。

<?php while(the_repeater_field('product_images')):?>
<img src="<?php the_sub_field('product_image'); ?>" alt="">
<?php endwhile;?>

「the_repeater_field()」と「the_sub_field()」を使っている点に注意。

繰り返しの方法(foreach)

foreachだと便利なような、めんどいような、あんま変わらんような。

<?php
    $rows = get_field('product_images');
    foreach($rows as $row):
?>
<img src="<?php echo $row['product_image']; ?>" alt="">
<?php endforeach;?>

まあ、普通。

最初のやつだけ別処理

<?php
    $rows = get_field('product_images');
    $cnt = 0;
    $r_cnt = count($rows);
    while($r_cnt > $cnt):
        $repeater_content = $rows[$cnt];
?>
<?php if($cnt === 0): ?>
<figure class="slide-item"><img src="<?php echo $repeater_content['product_image']; ?>" alt=""></figure>
<?php else: ?>
<figure class="slide-item"><img data-lazy="<?php echo $repeater_content['product_image']; ?>" alt=""></figure>
<?php endif; ?>
<?php 
    $cnt++;
endwhile;
?>

調べたら色々出てきたんだけどうまいこと動かなかったんでこんな感じになった。
うちの環境だとカウントを仕込むしかない。

slickの遅延読み込み使いたかったんだけどなぁ。

コメント

タイトルとURLをコピーしました