在我开始之前,你不应该利用query_posts
除非你的意图是破坏页面上的几乎所有内容:-)
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
要实现这一点,您应该使用WP_Query
, 以及post__not_in
参数您必须首先获取页面上所有帖子ID的数组,然后使用该数组在查询中排除这些帖子
您可以在页面上尝试类似的内容
$post_ids = wp_pluck_list($wp_query->posts, \'ID\');
$args = array(
\'posts_per_page\' => 1,
\'cat\' => 1,
\'post__not_in\' => $post_ids
);
$q = new WP_Query($args);
if ($q->have_posts()) {
while($q->have_posts()) {
$q->the_post();
//Your loop
}
wp_reset_postdata();
}