WP_Query查找在选定日期范围内具有post_modified或post_date的任何帖子

时间:2019-04-15 21:30:28

标签: wordpress

我们在Wordpress中有一个REST端点,该端点列出了在两个日期之间修改的帖子。我正在尝试对此进行修改,以包括在选定日期内发布或修改的所有帖子,但该查询存在问题。查询的相关部分如下所示:

// If a date has been specified, ensure the date query is performed by last modified date.
if ( $start_date || $end_date ) {
    $query_args['date_query'] = array(
        'column' => 'post_modified',
    );
}

if ( $start_date ) {
    $query_args['date_query'][] = array(
        'after' => $start_date . ' 00:00:00',
    );
}

if ( $end_date ) {
    $query_args['date_query'][] = array(
        'before' => $end_date . ' 23:59:59',
    );
}

$query = new \WP_Query( $query_args );

当我尝试将其更改为以下内容时(根据这篇文章https://wordpress.stackexchange.com/questions/215552/posts-modified-in-the-last-48-hours的建议),我收到的文章比我应该多的多-我认为OR关系可能是问题所在。

// If a date has been specified, ensure the date query is performed by last modified date.
if ( $start_date || $end_date ) {
    $query_args['date_query'] = 
        array(
            'relation'   => 'OR',
        array(
            'column' => 'post_modified',
        ),
        array(
            'column' => 'post_date',
        )
    );
}

if ( $start_date ) {
    $query_args['date_query'][] = array(
        'after' => $start_date . ' 00:00:00',
    );
}

if ( $end_date ) {
    $query_args['date_query'][] = array(
        'before' => $end_date . ' 23:59:59',
    );
}

此查询的其他部分还检查是否存在某些分类法。我想知道OR关系是否导致查询显示仅符合条件之一的所有文章。如果您对如何找到具有在指定日期范围内的post_modified或post_date的任何文章有任何建议,并且在有其他必要条件(例如查询的分类法部分)时可以使用,请告诉我。

1 个答案:

答案 0 :(得分:0)

我可以使用以下代码来完成此工作:

if ( $start_date && $end_date ){

    $query_args['date_query'] = 
    array(
        'relation'   => 'OR',
    array(
        array('column' => 'post_date',
        'after' => $start_date . ' 00:00:00',
        'before' => $end_date . ' 23:59:59',
    ),
    array('column' => 'post_modified',
        'after' => $start_date . ' 00:00:00',
        'before' => $end_date . ' 23:59:59',
    )
    )
    );

}

我遇到的问题是我没有将开始/结束日期分别放在每个数组部分中。希望这对某人有帮助!