WP_QUERY WITH OFFSET AND‘orderby’=>‘rand’,OFFSET不起作用

时间:2015-06-22 作者:imrek

我有以下情况:在我的索引上。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篇中的帖子。

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

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post