我正在做一个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
.
最合适的回答,由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.