从循环中保存(和排除)POST以在页面上的另一个循环中使用

时间:2018-05-26 作者:Cammy

我试图在分类法页面上显示相关帖子,但不确定如何进行第二个循环。我在帖子中共享了分类法,在这个页面上,它显示了带有标记“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? (代码标准方面)

1 个回复
最合适的回答,由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
    }
}

结束

相关推荐

Double loop output

大家好,我是一个中等权重的wp设计师/开发人员,在我工作的网站上遇到了问题。演示页面如下:http://flock.simonpointer.com/blog/我在模板文件中继承了以下循环代码,我一辈子都不明白为什么我在特色内容框中的作者信息会有两个输出。我似乎得到了第一篇和第二篇文章。在第二个页面上,不会加载作者照片和链接详细信息,但会加载到第一个页面上,并且会显示第二个页面的帖子缩略图,但不会显示第一个页面的帖子缩略图。感谢您的帮助: <div class=\"col-2-