问题描述

我试图得到一个循环中当前帖子的数量。我在主题中的一个页面上使用了多个循环。到目前为止我有:

$my_post_count = $wp_query->post_count;

但是当我打印 $ my_post_count 时,它将返回 WP 站点上的所有帖子的数量。它可以与在一个页面上使用多个查询有关吗?我试过在每个循环之后使用 wp_reset_query,以确保我没有这样扔东西。我究竟做错了什么?

最佳解决方案

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

次佳解决方案

我相信 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;?>

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。