Home > WordPress > WordPressでループ中の最後の投稿に何かしら追加したい場合

WordPressでループ中の最後の投稿に何かしら追加したい場合

  • Posted by: master
  • WordPress

ループ中いわゆるwhile (have_posts()) : the_post();の中の時

  • $wp_query->current_post
  • $wp_query->post_count

上記2つを使う。

$wp_query->current_post

(ループ内でのみ使用可能) 表示されようとしている投稿の数。
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query

$wp_query->post_count

表示される投稿の数。

実際のコード

<?php 
    global $wp_query; 
    if($wp_query->current_post+1 === $wp_query->post_count) {
        echo lastentry;
    } 
?>

解説

まずは$wp_queryをグローバル宣言し参照できるようにします。
これが抜けてると後述のコードだけでは実行されません。

その後、$wp_query->current_post+1で表示されようしている数に1追加した数と表示される投稿数が等価の場合実行するようにしています。

つまり記事が5記事表示されてるTOPページだとします。

その場合$wp_query->post_countは5になります。

しかしながら$wp_query->current_postはループ中0から数がカウントされます。ですので$wp_query->current_postは0,1,2,3,4としてカウントしています。(合計5回カウントしています)

よって$wp_query->current_post+1した時(最後の4に1追加して結果は5)と$wp_query->post_count(この場合5)が一致したときは最後の記事と判断します。

試しに下記のコードをループタグ中に埋め込んでみると0からカウントされるのがわかります。

<?php global $wp_query; echo $wp_query->current_post;?>

2項演算子で少しすっきりに

上記のを少しだけすっきり記載した場合。

<?php global $wp_query; if($wp_query->current_post+1 === $wp_query->post_count) echo lastentry; ?>

Comments:0

コメントする

Home > WordPress > WordPressでループ中の最後の投稿に何かしら追加したい場合

Search

Feeds

Return to page top