为什么我不能用WP_QUERY得到旧的帖子而不是最近的帖子?

时间:2015-08-12 作者:EliasNS

我正在做一个WP_Query 使用date_query 参数after, 和I want the nearest post after that date, 但我得到的是未来最远的。是否有任何参数可以控制这一点?类似于\'near_to\' => \'past/future\', 或者WP\\u Query总是检索最近的?这是我的代码:

$my_query = new WP_Query(array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => 1,
    \'date_query\' => array(
        \'after\' => date(\'Y-m-d h:i\',time())
    )
));
我有一个活动网站,我想展示下一个,而不是最远的。

忽略这样一个事实,即检查的日期是今天,而我搜索的帖子是在将来。没关系(没有?)。

我一直在看抄本,但什么也没找到。我必须查询所有帖子以及$my_query->posts 大堆

编辑:我不想对我的结果排序,我想按较旧的帖子限制它们,而不是按最新的帖子(默认设置)。我有几篇关于未来日期(事件)的帖子,我想要下一个事件。如果我只使用此参数进行查询\'posts_per_page\' => 1 我得到最新的帖子,我想要最老的。

谢谢

<小时>The solution is to use the parameter \'order\' => \'ASC\'. 感谢@PieterGoosen和@webtoure。现在让我解释一下为什么我的问题不是百分之百正确的,以及为什么它有效。

我没有测试\'order\' 因为我只有一个错误的帖子(这是我想的),我没有什么要订购的,但是WP_Query does not works that way. 正如我自己解释的this answer, WP_Query 首先查找符合条件的帖子,然后排序、分页等,以便搜索帖子\'after\' 日期(全部),然后由\'ASC\', 只获得1个帖子\'posts_per_page\' => 1.

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

你真的在使用\'after\' => date(\'Y-m-d h:i\',time()) 在您的代码中?这将始终要求帖子<删除>较旧较新,即运行该查询的确切当前时间。类似这样:

\'after\' => date( \'Y-m-d h:i\', time() - 60 * 60 * 24 )
会给你一份过去24小时的推荐信。

以上部分是为了历史。此答案中的解决方案is and was 但一直都是这样

至于结果是“背景词”(从最新到最旧,反之亦然),您可能需要添加一个order 您的代码片段的子句(我尚未测试):

$my_query = new WP_Query( array(
    \'post_type\' => \'post\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => 1,
    \'date_query\' => array(
        array(
            \'after\' => date( \'Y-m-d h:i\', time() ),
        )
    ),
) );
Final edit (tested and working). You need the order clause since WordPress queries posts \'DESC\' by default. Test the code and see for yourself.

结束

相关推荐

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

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