我们在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的任何文章有任何建议,并且在有其他必要条件(例如查询的分类法部分)时可以使用,请告诉我。
答案 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',
)
)
);
}
我遇到的问题是我没有将开始/结束日期分别放在每个数组部分中。希望这对某人有帮助!