元查询日期列添加[x]天以进行验证

时间:2017-11-06 作者:Wesley Brian Lachenal

我正在从ajax中检索事件数据,并使用挂钩加载更多插件。要求是我需要验证检索所需的天数。事件结束日期10天后,将不会显示结果。

$args = [
    \'post_status\'    => \'publish\',
    \'post_type\'      => array(TribeEvents::POSTTYPE),
    \'posts_per_page\' => 20,
    \'meta_key\'       => \'_EventStartDate\',
    \'orderby\'        => \'_EventStartDate\',
    \'order\'          => \'ASC\',
    \'offset\'         => $offset,
    \'meta_query\' => [
        \'key\'     => \'_EventEndDate\',
        \'value\'   => \'_EventEndDate INTERVAL 10 DAY\', // <-- this part
        \'compare\' => \'>=\',
        \'type\'    => \'DATE\'
    ]
];
但当然,它不起作用,在我这方面也并没有表现出任何东西。问题是我需要_EventEndDate 添加10天,但当前解决方案不起作用。

2 个回复
SO网友:Rarst

在我的脑海中应该是这样的:

\'meta_query\' => [
        \'key\'     => \'_EventEndDate\',
        \'value\'   => [ $start, $end ],
        \'compare\' => \'BETWEEN\',
        \'type\'    => \'DATETIME\'
    ]
在这种情况下,在传递到查询之前,您需要自己计算边界。

看见Custom Field Parameters 有关元查询可用参数的完整文档,请参阅Codex。

SO网友:Nicolai Grossherr

使用array 对于value, 所以[ $begin, $end ]. 对于compare 使用BETWEENtypeDATETIME. $end 我想是现在$begin 十天前,所以

$now = new DateTime(); 
$end = $now->format( \'Y-m-d H:i:s\' ); 
$begin = $now->modify( \'-10 days\' )->format( \'Y-m-d H:i:s\' );

$args = [
    \'meta_query\' => [
        \'key\'     => \'_EventEndDate\',
        \'value\'   => [ $begin, $end ],
        \'compare\' => \'BETWEEN\',
        \'type\'    => \'DATETIME\'
    ]
];

结束

相关推荐