web-dev-qa-db-ja.com

ループの投稿数を数える(WP_Query)

私はポストのNOを表示するためにこの方法を試しました:

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count;

  ?>

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>



    <?php } } ?> <?php wp_reset_query(); ?> 

投稿のNO = 0の場合、私はこれを表示する必要があります -

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count;

  if ($count  == '0') {

  ?>
  <li><h3><a href="javascript:void(0)">No Post</a></h3></li>

  <?php
  } else {
  ?> 
    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  }  ?>

    <?php } } ?> <?php wp_reset_query(); ?> 

しかし、投稿の総数ではなく、私は何もしていません。

これを修正するための提案はありますか?

8
user49575

WP_Query はすでにあなたのためにそれをしているので、いくつかの追加情報、再び投稿を数える必要はありません。これを明確にするために、"PropertiesセクションにあるWP_Queryのクラスリファレンスからの情報を以下に示します。

$ post_count
表示されている投稿数。

$ found_posts
現在のクエリパラメータに一致すると思われる投稿の総数

これはどういう意味ですか

  1. $post_countはあなたに総投稿数を教えてくれません。それよりも投稿数が少ない場合、または最後のページに表示されていて残りの投稿数が少ない場合を除き、ほとんどの場合、post_per_pageパラメータで定義した投稿数が表示されます。
  2. $found_postsは、特定のクエリに関連する投稿の総数を取得するために使用できます。それで、それらを再び数える必要はありません。

あなたの場合、あなたはこのようにあなたの$count変数に合計カウントを得ることができます:

$count = $news_2->found_posts;

それに加えて、@helgathevikingは、あなたがあなたの質問で示したものから、あなたが余分な条件を必要としないということです、あなたがすでに持っている条件の中で、have_posts()メソッドを単に使うことができます。

21
Nicolai

投稿が見つからない場合は、投稿を数えて何かを表示する必要はありません。あなたはif($news_2->have_posts())チェックのelseの部分を使うことができます。

$news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );

if ( $news_2->have_posts() ) { 

    while ( $news_2->have_posts() ) { 

        $news_2->the_post();

    ?> 

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  } 

    } else { ?>

    <li><h3>No Post</h3></li>

    <?php } ?> 

<?php wp_reset_query(); ?> 

あなたが本当に返された投稿の数を数える必要があるのであれば、あなたは使用することができます

$count = count( $news_2->posts );
3
helgatheviking