ワードプレスのテーマファイル「index.php」や「archive.php」などで、投稿をループして表示させる際に、最初の投稿または最後の投稿で違う処理をする方法を紹介します。
ループの最初だけ違う処理
ワードプレスのデフォルトの機能「$wp_query」オブジェクトに格納されている変数「current_post」には、ループの回数に関する情報が入っています。
これを利用して、次のようなコードで「最初の投稿」を分岐させることができます。
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php if ($wp_query->current_post == 0) { ?> // 最初だけ違う処理 <?php } ?> // 通常の処理 <?php endwhile; ?> <?php endif; ?>
注意すべきポイントとしては、最初の投稿が「0番目」になっている点です。
ループの最後だけ違う処理
最後の記事だけを分岐する際は「current_post」に加えて「post_count」を使います。
「post_count」には全体の投稿数が入っているので、それを利用して次のように記述します。
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> // 通常の処理 <?php if ($wp_query->current_post == $wp_query->post_count - 1) { ?> // 最後だけ違う処理 <?php } ?> <?php endwhile; ?> <?php endif; ?>
こちらでも同様に、最初の投稿が「0」から始まっているので、比較する「post_count」は「-1」として減らしてから条件判定を行います。
ワードプレスのループをカウントする際、current_post
は非常に便利です。
ぜひお役立てください。