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

时间:2011-10-16 作者:pwbred

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

$my_post_count = $wp_query->post_count;
但当我打印$my\\u post\\u count时,它会返回WP站点上所有帖子的编号。这可能与在一个页面上使用多个查询有关吗?我试着在每次循环后使用wp\\u reset\\u查询,以确保我不会以这种方式抛出东西。我做错了什么?

4 个回复
最合适的回答,由SO网友:Rarst 整理而成

$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);

SO网友:Wyck

我相信post\\u计数存储在全局中,因此在自定义循环之前,应该将其设置为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;?>

SO网友:Amritosh pandey

使用WP\\U查询的另一种解决方案是:

           <?php 
               $args = array(
               \'post_type\' => \'post\'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 

SO网友:Suresh Suthar

计算包括分页在内的全部帖子的简单方法

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

结束

相关推荐

与Loop不同,Get_Page()返回不带html标记的POST内容。我怎么才能解决这个问题?

get\\u page()不像循环那样返回没有html标记的帖子内容。我需要标签。我怎样才能解决这个问题?我不想更改所见即所得编辑器,这是一个糟糕的解决方案http://wordpress.org/support/topic/preserve-html-with-get_pages