WordPressで記事一覧を出力する際に、先頭の記事もしくは最後の記事にだけ、他とは異なる処理を行う方法をご紹介いたします。
WordPressの記事一覧出力時に先頭もしくは最後の記事だけに違う処理をする方法
先頭の記事だけ異なる処理をする
先頭の記事かどうかを判別するためには、「$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; ?>
上記のように「if ($wp_query->current_post == 0)」で条件分岐させることで、先頭の記事だけに異なる処理を行うことができます。
この方法を使えば先頭の記事だけでなく、2番目や3番目の記事を判別することも可能です。先頭の記事は0番目になりますので、2番目の記事は「$wp_query->current_post == 1」、3番目の記事は「$wp_query->current_post == 2」で条件分岐します。
最後の記事だけ異なる処理をする
最後の記事だけを判別するためには、「$wp_query->post_count」を利用します。「$wp_query->post_count」には、”すべての投稿記事数”が格納されていますので、「$wp_query->current_post」と組み合わせて条件分岐させることで、最後の記事を識別します。
<?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; ?>
「if ($wp_query->current_post == $wp_query->post_count – 1)」で、”すべての投稿数-1″が”ループの回数”と同じかどうかを判別することで最後の記事を判断しています。ループの回数は0番目から始まるため、$wp_query->post_countから1をマイナスしています。
あとがき
先頭の記事だけに違う処理を行う方法は、アイキャッチ画像を大きくしたり、他とは違うクラスを付与して装飾を変えたりと、活用できるシーンも多いかと思います。
逆に最後の記事については、そこまで見てくれるユーザーは少ないと思うので、活用できるシーンはそんなに多くないと思います。ですが、最後の記事まで見てくれるユーザーはファンであると言っていいので、最後の記事だけに特別な処理を施しておいてオモテナシしてあげるのも良いかもですね。