我试图查询我的帖子的几个日期范围,特别是在24小时内发布的帖子,7天内发布的帖子,两周前发布的帖子,以及超过2周的帖子。
如果我想查询一个特定的日期范围,例如24小时内的帖子,我可以轻松地查询帖子。
我现在正在努力解决的是,当选择两个日期范围时,我不确定如何查询帖子。例如,如果用户尝试筛选并查看在24小时内发布的帖子和超过两周的帖子。
以下是我用于日期范围过滤器的数组结构:
Array
(
[0] => 24-hours-after
[1] => 1-week-after
[2] => 2-weeks-before
)
那么我当前的代码是:
$the_date = end( $_POST[\'date_range\'] );
$the_date_sep = explode( \'-\', $the_date );
$args[\'date_query\'] = array(
array(
$the_date_sep[2] => $the_date_sep[0] .\' \' .$the_date_sep[1] .\' ago\'
),
\'inclusive\' => true,
);
我正在使用
end
函数来选择最后一个过滤器,但显然这不是一种有效的方式,因为它忽略了其他选定的过滤器,如果我尝试过滤来自不同日期范围的帖子,例如24小时前的帖子和两周前的帖子。
在我可以根据日期过滤Wordpress帖子的地方,实现这一点的有效方法是什么?
非常感谢。
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
您可以在查询中使用多个日期范围,如下所示:
$args[\'date_query\'] = array(
\'relation\' => \'OR\',
array(
\'after\' => \'-24 hours\',
),
array(
\'after\' => \'-1 week\',
),
array(
\'before\' => \'-2 weeks\',
)
);
这将为您获取在这些范围内发布的帖子。
因此,现在必须基于过滤器数据构建这样的数组。