WP_Queryを使用して記事一覧などを作成する際に、最初の記事と最後の記事だけ違う処理をする方法です
classを適用してデザインを変えたり2件目以降からだけ表示したい等という時に便利です
最初だけ違う処理をする
最初の記事かどうかの判定をするにはWP_Queryの「current_post変数」を使用します
「current_post変数」はループ内で現在何番目の記事を処理しているかが格納されております
最初の記事は「0番目」の記事として処理されますので、if文で「current_post == 0」なら最初の記事といった形で判定します
「1番目」の記事ではないのでご注意下さい
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php if ($wp_query->current_post == 0) : ?> // 最初の投稿の処理 <?php endif; ?> // 通常の投稿の処理 <?php endwhile; ?> <?php endif; ?>
最後だけ違う処理をする
最後の記事だけ判定する場合は「current_post変数」に加えて「post_count変数」も使用します
「post_count変数」は記事全体の件数が格納されておりますので、「current_post変数」と「post_count変数」をif文で比較して同じであれば最後の記事として判定します
ただし「current_post変数」は0から始まるのですが「post_count変数」は1から始まりますので「post_count変数」は1を引いた値で処理します
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> // 通常の投稿の処理 <?php if ($wp_query->current_post == $wp_query->post_count - 1) : ?> // 最後の投稿の処理 <?php endif; ?> <?php endwhile; ?> <?php endif; ?>
まとめ
ちょっとした小技ですが知ってると何かと便利です
コメント