[英]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.