问题描述
我试图得到一个循环中当前帖子的数量。我在主题中的一个页面上使用了多个循环。到目前为止我有:
$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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。