您可以使用meta_query
使用AND或or关系组合多个查询。诚然,在这种情况下确实有点复杂,但因为可以嵌套多个查询,所以仍然可以实现它。
这在WP_Meta_Query documentation 在某种程度上WP_Query docs.
我认为应该这样做。我还没有对此进行测试,但它应该做您想做的事情:比较这三个字段以确保事件发生在过去。
在代码下方滚动以了解其功能的说明。
$query[\'meta_query\'] = array(
\'relation\' => \'OR\',
array(
\'key\' => \'pec_end_datetime\',
\'compare\' => \'<\',
\'value\' => current_time(\'Y-m-d\'),
\'type\' => \'DATE\',
),
array(
\'relation\' => \'AND\',
array(
\'key\' => \'pec_end_datetime\',
\'compare\' => \'=\',
\'value\' => current_time(\'Y-m-d\'),
\'type\' => \'DATE\',
),
array(
\'key\' => \'pec_end_time_hh\',
\'compare\' => \'<\',
\'value\' => current_time(\'G\'),
\'type\' => \'NUMERIC\',
),
),
array(
\'relation\' => \'AND\',
array(
\'key\' => \'pec_end_datetime\',
\'compare\' => \'=\',
\'value\' => current_time(\'Y-m-d\'),
\'type\' => \'DATE\',
),
array(
\'key\' => \'pec_end_time_hh\',
\'compare\' => \'=\',
\'value\' => current_time(\'G\'),
\'type\' => \'NUMERIC\',
),
array(
\'key\' => \'pec_end_time_mm\',
\'compare\' => \'<\',
\'value\' => current_time(\'i\'),
\'type\' => \'NUMERIC\',
),
),
);
我们所做的是用OR关系提供三个不同的meta\\u查询。如果其中任何一项为真,则事件发生在过去:
如果日期小于今天的日期,或者如果日期是今天,小时小于当前的小时,或者如果日期是今天,小时是当前的小时,分钟小于当前的分钟,不幸的是,我们不能将所有这些合并到一个简单的查询中,因为我们显然不希望在未来三个小时内发生事件,在半小时后,在45分钟后,作为过去事件出现!
发送到的字符串current_time()
全部匹配PHP date formats.