WordPress Logo

ワードプレスのテーマファイル「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は非常に便利です。
ぜひお役立てください。