繁体   English   中英

循环中的帖子少于对象$ wp_query中的帖子

[英]Less posts in loop than in object $wp_query

我看到一些奇怪的行为,无法在基于类别的模板循环中解释。

我有一个用于类别模板的自定义查询过滤器,预先选择了两个自定义帖子类型来查询:

add_filter( 'pre_get_posts', 'cust_posts_collection' );
function cust_posts_collection( $query ) {
  if ( (is_category() && $query->is_main_query()) )
    $query->set( 'post_type', array( 'cust_post_type_1', 'cust_post_type1' ) );
  return $query;
}

这将导致一个正确的$ wp_query对象,其中包含一系列帖子。 假设对于给定的类别x,有4个帖子。 当我var_dump $ wp_query我可以验证

["posts"]=>&array(4)

我可以在转储中看到所有帖子及其数据。

但是,当我循环然后在那个对象上时:

<?php  if ( $wp_query->have_posts() ) while ( $wp_query->have_posts() ) : $wp_query->the_post();
  var_dump($post);
endwhile; ?>

我只看到两个帖子。

这怎么可能?

我缺少的循环功能上是否有任何配置默认值?

我能够解决该错误:

事实证明,在循环中暴露该错误之前,标头部分中还有另一个循环。

第一个循环在if条件之后紧接一个break语句-这个想法:找到某个自定义帖子类型的第一个匹配项,然后退出循环。

问题:此中断未正确重置全局发布索引变量或类似内容。 然后,下一个循环的索引状态错误,从而导致其跳转的初始帖子数与上一个循环中循环的一样多。

在休息之前添加rewind_posts()为我解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM