我试图在分类法页面上显示相关帖子,但不确定如何进行第二个循环。我在帖子中共享了分类法,在这个页面上,它显示了带有标记“Light”的帖子类型A。
一些带有“Light”标签的帖子不是A类帖子。因此我有以下内容:
<?php $related = array(); ?>
<?php while (have_posts()) : the_post(); ?>
<?php if(get_post_type() == \'Type_B\' || get_post_type() == \'Type_C\'){
array_push($related, $post);
continue;
} ?>
<?php endwhile; ?>
这很好用。但后来在我想循环类型B和C的页面上,我想做一个类似的循环会很简单。但是wp\\u查询数组似乎很特殊?即使我的数组包含帖子。
if($related->have_posts()){
while($related->have_posts()) { $related->the_post();
print_r($post);
}
}
我得到以下错误:
Fatal error: Uncaught Error: Call to a member function have_posts() on array
我试过了$relatedList = new WP_query($related);
但这是不对的。有什么建议吗?
Edit: 嗯,看来我可能走错了方向。在我有第二个循环的地方,我仍然可以访问主循环,所以如果在那里检查的话,我可以做一个reveres帖子。Is this what I should be doing? (代码标准方面)
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
这里的主要问题是$wp_query
不是数组。它是和的实例WP_Query
class. 这就是为什么它有一些方法have_posts
, the_post
, 等等
另一方面$related
是普通的PHP数组,因此它没有任何方法-因此,如果您尝试调用任何方法,就会出现致命错误。
因为帖子已经添加到$related
数组,处理它们的简单方法是通过该数组循环:
if ( ! empty($related) ) {
foreach ( $related as $post) {
print_r($post);
// you can\'t use template tags in here unless you use setup_postdata function
}
}