在一页上使用多个查询时,获取当前循环的发布计数


10

我正在尝试获取循环内当前帖子的数量。我在主题的一页上使用了多个循环。到目前为止,我有:

$my_post_count = $wp_query->post_count;

但是,当我打印$ my_post_count时,它将返回我WP网站上所有帖子的编号。可能与在一页上使用多个查询有关吗?我尝试在每个循环后使用wp_reset_query,以确保我不会那样扔东西。我究竟做错了什么?

Answers:


29

$wp_query 保存页面的主循环,不应用于创建多个循环。

如果您正在使用新WP_Query对象,那么保存它的变量将具有相应的计数:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

如果使用的是get_posts()那么WP_Query的对象是无法访问的,并且应该只算返回集:

$posts = get_posts();
$count = count($posts);

注意:如果您位于主循环中,则可以WP_Query通过global $wp_query
mrmadhat

5

我相信post_count是存储在全局变量中的,因此在自定义循环之前应将其设置为0,因为您可以在循环之外使用它,但这取决于您如何构造多个查询,也许您可​​以将它们添加到帖子中?

例如,我在循环中使用的另一种方法是使用来计数帖子current_post + 1

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

     endwhile;?>

2

使用WP_Query的替代解决方案是:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_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.