acf リピーターにいくつ繰り返しがあるかは count(get_field(‘fieldname’)); でループの前でも取得できるが、小見出しとテキストがセットになったリピーターで小見出しの入力が2つ以上あったら目次(アンカーリンク)をつけるという仕様の場合、どうしたものか?
一度ループを作って数えるというのはなかなかにややこしい感じがするので、1つ前の投稿のやり方で、別のフィールドにカウントを保存することにした。

function my_acf_update_value( $value, $post_id, $field ) {
    if(get_post_type( $post_id ) == 'xxx' && have_rows('xxx')) { $count=0; while (have_rows('xxx')) : the_row();
        if (get_sub_field('title')) { $count++; }
    endwhile; } 
    $value = $count;
    return $value;
}
add_filter('acf/update_value/name=count', 'my_acf_update_value', 10, 3);

これで、目次は get_field(‘count’) > 1 だったら表示、本文の表示部分のカウントは0から初めて、while の直後に小見出しの入力があったら1増やす、とした。

その他のAdvanced Custom Fields に関する記事一覧

2020.04.23 投稿 2020.04.24 更新

新しい情報を追記している場合はありますが、古い情報の修正はしていません。投稿日・文中の日付を参照してください。

Recent Articles