スポンサーリンク

WP_Queryで最初の記事と最後の記事に違う処理をしたい

WordPress

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; ?>

まとめ

ちょっとした小技ですが知ってると何かと便利です

コメント

タイトルとURLをコピーしました