ACFの柔軟フィールドで1件目のみ/2件目以降を表示する方法
2021年10月17日
WordPress
この記事のURLとタイトルをコピーする
WordPressのACF(Advanced Custom Fields)では、コンテンツを自由に管理できるレイアウトを追加するフィールド「柔軟コンテンツ」があります。
今回は柔軟フィールドの件数に対し、「1件目のみ」と「2件目以降」で表示させる備忘録です。
同じにすると2件目以降の際、1件目の値が上書きされてしまいます。
1行目のif( have_rows() )は、4行目と18行目のwhile ( have_rows() ) : the_row();とそれぞれ纏めて書いても大丈夫です。
今回はフィールドが空の場合にsectionタグごと非表示にしたかったので、あえてif( have_rows() )を外に記述しました。
また「4件目まで」や「5件目以降」など件数を変更する場合は、8行目と22行目のif文を変更すれば実装できそうですね。
今回は柔軟フィールドの件数に対し、「1件目のみ」と「2件目以降」で表示させる備忘録です。
表示方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php if( have_rows('フィールド名') ): ?> <section> <div class="content1"> <?php while ( have_rows('フィールド名') ) : the_row(); ?> <?php $flow_postcount++; ?> <?php if( get_row_layout() == 'レイアウト名前' ): ?> <?php if ($flow_postcount == 1): ?> //1件目のみを表示 <div class="title"><?php the_sub_field("サブフィールド名01"); ?></div> <div class="txt"><?php the_sub_field("サブフィールド名02"); ?></div> <?php endif; ?> <?php endif; ?> <?php endwhile; ?> </div> <div class="content2"> <?php while ( have_rows('フィールド名') ) : the_row(); ?> <?php $flow_postcount2++; ?> <?php if( get_row_layout() == 'レイアウト名前' ): ?> <?php if ($flow_postcount2 >= 2): ?> //2件目以降を表示 <div class="title-flow"><?php the_sub_field("サブフィールド名01"); ?></div> <div class="txt-flow"><?php the_sub_field("サブフィールド名02"); ?></div> <?php endif; ?> <?php endif; ?> <?php endwhile; ?> </div> </section> <?php endif; ?> |
ポイント
5行目の$flow_postcountと19行目の$flow_postcount2を同じ変数にしないこと。同じにすると2件目以降の際、1件目の値が上書きされてしまいます。
1行目のif( have_rows() )は、4行目と18行目のwhile ( have_rows() ) : the_row();とそれぞれ纏めて書いても大丈夫です。
今回はフィールドが空の場合にsectionタグごと非表示にしたかったので、あえてif( have_rows() )を外に記述しました。
使い方
この手法は「2件目以降のレイアウトを変更したい」や「2件目以降をアコーディオンに格納したい」などの場合に使用します。また「4件目まで」や「5件目以降」など件数を変更する場合は、8行目と22行目のif文を変更すれば実装できそうですね。
この記事のURLとタイトルをコピーする