计数循环的帖子(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
嘿,想回来对提供给您的两个答案中的一个进行权衡吗?
helgatheviking 2014年

如果有任何答案对您有所帮助,请考虑接受。请参阅» 有人回答我的问题该怎么办?«和/或» 为什么投票很重要?«,可在帮助中心获取有关WordPress开发模型的更多信息。
Nicolai 2015年

Answers:


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 );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.