[WordPress] while( have_post() )ループでループカウンタの取得方法は?

WordPressの記事一覧をループしているときに、最初の1件目のみ処理を変えたいときがあります。
このような場合は、$wp_queryオブジェクトが持っているcurrent_post変数に、ループカウンタが保存されていますので、これを利用すると便利です。
また、post_count変数に件数が保存されているので、post_countを比較することで最後の時のみ特定の処理を行うことができます。

current_post変数は0から始まることに注意が必要です。

具体的には、have_posts()のループ内に、下記のような感じで判定式を書けばOKです。

if( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        if ( $wp_query->current_post === 0 ) {
            // 最初の記事の時の処理
        }
        if ( $wp_query->current_post === $wp_query->post_count -1 ) {
            // 最後の記事の時の処理
        }
        ...
    }
}

関連記事

コメントを残す

メールアドレスが公開されることはありません。