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


10

私はこの方法で投稿の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(); ?> 

しかし、投稿の総数の代わりに、私は何も得ません。

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


2
ねえ、戻ってきて、あなたに提供された2つの答えのどちらかを検討したいですか?
helgatheviking 2014

場合はいずれかの答えのは参考になりました、それを受け入れることを検討してください。参照» 誰かが私の質問に答えたとき、私は何をすべきですか?«および/または» なぜ投票が重要なのですか?«WordPress開発モデルの詳細については、ヘルプセンターをご覧ください。
Nicolai

回答:


23

いくつかの追加情報。投稿を再度数える必要はありWP_Queryません。すでにそれを行っているためです。これを明確にするためWP_Queryに、「プロパティ」セクションにあるクラスリファレンスのいくつかの情報:

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

$ found_posts
現在のクエリパラメータに一致する見つかった投稿の総数

これが意味することは

  1. $post_count合計投稿数はわかりません。それpost_per_pageよりも投稿数が少ないか、最後のページにいて、投稿数が少ない場合を除いて、パラメータで定義した投稿数が表示される可能性が高くなります。
  2. $found_posts特定のクエリに関連する投稿の総数を取得するために使用できます。したがって、それらを再度カウントする必要はありません。

あなたの場合、次のように合計数を$count変数に入れることができます:

$count = $news_2->found_posts;

その上@helgathevikingは正しいです、あなたが質問で示したことから、あなたは追加の条件を必要としませんが、have_posts()彼女が提案したように、あなたがすでに持っている条件で、そのための方法を使うことができます。


4
found_postsプロパティの+1。あなたは毎日何か新しいことを学びます!:)
helgatheviking 2014年

4

投稿が見つからない場合、別の何かを表示するために投稿を数える必要はありません。小切手のelse一部のみご利用いただけますif($news_2->have_posts())

$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 );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.