在自定义查询中返回所有粘滞帖子

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

我有以下代码:

$recommended_args = 
    array(
            \'post_type\' => \'post\',
            \'posts_per_page\' => 3,
            \'post__in\' => get_option(\'sticky_posts\'),
            \'orderby\' => \'date\'
        );

$recommended_query = new WP_Query($recommended_args);
if ($recommended_query->have_posts()) {
    while($recommended_query->have_posts()) {
        $recommended_query->the_post();
        get_template_part("templates/article-random");
    }
}
基本上,它应该返回标记为粘滞的最近3篇帖子。但是,它会将DB中的所有(超过3个)粘性帖子转储到屏幕上。

这些论点有什么问题?有没有一种方法可以修复此问题而不必更换while 循环使用for 循环,仅在WP_Query 对象

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

post__in 使用参数。如果您阅读docs, 你会发现你应该\'ignore_sticky_posts\' => 1 消除被查询的粘性帖子

编辑查询参数应如下所示

$recommended_args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => 3,
    \'post__in\' => get_option(\'sticky_posts\'),
    \'orderby\' => \'date\',
    \'ignore_sticky_posts\' => 1
);
默认情况下,编辑2,WP_Query (无论这是主查询还是自定义查询)搜索并返回第一页顶部的所有粘性帖子。忽略所有其他查询参数,特别是posts_per_page. 如果你有100个胶粘物posts_per_page 设置为3, 将返回所有100条粘性帖子,无论是否有3条帖子不在粘性帖子数组中

然后从查询中的原始位置删除这些粘性帖子,以避免重复。当你经过时get_option( \'sticky_posts\' )post__in, 这些粘性帖子只需从查询中删除,如下所示WP_Query 已将其作为粘贴帖子返回,这是为了避免它们显示为重复。

要使查询工作正常,请have to “关闭”粘滞贴子功能,以便WP_Query 可以排除它们,只关注手头的查询。为此,您需要设置ignore_sticky_posts 参数至1 这意味着粘性帖子将被忽略

我希望这现在有意义

结束

相关推荐

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

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