具有多个日期范围的WP查询DATE_QUERY

时间:2019-03-08 作者:drifter

我试图查询我的帖子的几个日期范围,特别是在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帖子的地方,实现这一点的有效方法是什么?

非常感谢。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

您可以在查询中使用多个日期范围,如下所示:

$args[\'date_query\'] = array(
    \'relation\' => \'OR\',
    array(
        \'after\' => \'-24 hours\',
    ),
    array(
        \'after\' => \'-1 week\',
    ),
    array(
        \'before\' => \'-2 weeks\',
    )
);
这将为您获取在这些范围内发布的帖子。

因此,现在必须基于过滤器数据构建这样的数组。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post