我有以下情况:在我的索引上。php我正在使用WP\\u Query()显示最近的20篇帖子。在另一部分的同一页上,我想再显示3篇来自档案馆的随机帖子,这些帖子不在最近20篇中。
我的代码(第二次WP\\U查询):
$archive_random_args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 3,
\'offset\' => 20,
\'orderby\' => \'rand\'
);
$archive_random_query = new WP_Query($archive_random_args);
if ($archive_random_query->have_posts()) {
while($archive_random_query->have_posts()) {
$archive_random_query->the_post();
get_template_part("templates/article-random");
}
}
问题是,尽管偏移量设置为20,但第二个WP\\U查询循环中会显示最近20个的帖子。
可以offset
和\'orderby\' => \'rand\'
一起用作参数?
附言:目前我有36篇帖子,所以有足够多的帖子供第二次WP\\u查询随机挑选3篇不在最近20篇中的帖子。
最合适的回答,由SO网友:Pieter Goosen 整理而成
您需要从原始主查询中获取帖子ID并将其排除。然后,您应该从自定义查询中删除偏移量。这应该可以奏效。随机排序基本上会忽略offset参数,因此需要从查询中明确删除帖子以排除它们
您可以使用wp_list_pluck()
要从主查询对象获取帖子ID数组(,请使用$wp_query->posts
)
$posts_ids = wp_list_pluck( $wp_query->posts, \'ID\' );
然后,您需要将其作为
post__not_in
参数
\'post__not_in\' => $posts_ids,