尽管参数为True,但日期查询不包含

时间:2014-10-10 作者:helgatheviking

我已经设置了一个小的测试查询,以便从10月1日到10月10日获得一些帖子。我今天(10月10日)发布了一篇帖子,日期查询参数为include 如果设置为true,我希望这篇文章会显示在查询结果中。然而,事实并非如此。

如果我将帖子的发布日期改为10月1日,结果中会显示出来。如果我改变inclusive 如果为false,则仍会显示。大体上inclusive 似乎什么都不做。

如果inclusive 答案是不是,有没有其他方法可以确保我从10月1日到10月10日收到所有帖子,包括10月1日和10月10日?

$args = array( 
    \'date_query\' => array(
                array(
                    \'after\' => \'2014-10-01\',  
                    \'before\' => \'2014-10-10\',
                    \'inclusive\' => true  
                ),

            )
    );

$posts = get_posts($args);
if( $posts ) { 
    foreach ($posts as $p) {
        echo $p->post_title . \' on \' . $post->post_date . \'<Br>\';
    } 
} else {
    echo \'no posts\';
}
Edited 要补充的是,我刚刚转储了日期查询SQL和where子句

“和((post\\u date>=“2014-10-01 00:00:00”和post\\u date<;=“2014-10-10 00:00:00”))”

所以它实际上根本不包括全天。将值筛选到

“和((post\\u date>=“2014-10-01 00:00:00”和post\\u date<;=“2014-10-10 23:59:59”))”

实际上包括10月10日当天发布的帖子。

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

如果你只想和yyyy-mm-dd 例如字符串\'2014-10-10\', 您可以这样做:

\'before\' => \'2014-10-10 + 1 day - 1 second\',

\'before\' => \'2014-10-10 + 86399 seconds\',

\'before\' => \'tomorrow 2014-10-10 - 1 second\',

\'before\' => \'2014-10-10 tomorrow - 1 second\',

只需附加\'23:59:59\' 到您的yyyy-mm-dd 一串

获取

\'before\' => \'2014-10-10 23:59:59\'

结束

相关推荐

使用_time和_date函数时的区别

我对WordPress的工作方式有些怀疑the_date() 定义为的功能general-template.php在一个页面中,我将使用以下代码片段将帖子归档到一个循环中:<article id=\"post-<?php the_ID(); ?>\" <?php post_class(); ?>> <header> <h3 class