我使用一对ACF日期字段来创建对自定义帖子类型(事件)的查询。我有一个;“过去的事件”;feed忽略了我创建以下行为的常用技巧:
如果事件(CPT)有结束日期值,请检查它是否在过去,否则如果事件没有结束日期值,请使用事件日期值(必填字段)并检查它是否在过去,我已多次将这两个子句嵌套在OR关系中,但在这种情况下,这不起作用。任何过去具有event\\u date值的事件都会出现在“past Events”查询结果中,即使现在和将来都有end\\u date值。
这是完整的查询–它与我通常的方法不同,因为它需要过滤掉更多选项:event\\u type(单选按钮)和include\\u in\\u past\\u events(true/false)。
date_default_timezone_set(\'Europe/London\');
$past = date(\'Ymd\', strtotime("-999 months"));
$now = date(\'Ymd\', strtotime("now"));
$past_args = array(
\'post_type\' => \'event\',
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'relation\' => \'AND\',
array(
\'relation\' => \'OR\',
// check to see if end date has been set
array(
\'key\' => \'end_date\',
\'compare\' => \'BETWEEN\',
\'type\' => \'NUMERIC\',
\'value\' => array($past, $now),
),
// if no end date has been set use event/start date
array(
\'key\' => \'event_date\',
\'compare\' => \'BETWEEN\',
\'type\' => \'NUMERIC\',
\'value\' => array($past, $now),
)
),
array(
\'key\' => \'event_type\',
\'value\' => array(\'Singlar\', \'Multi-Day\', \'Series\'),
)
),
array(
\'key\' => \'include_in_past_events\',
\'value\' => \'1\',
)
),
\'meta_key\' => \'event_date\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'nopaging\' => false,
\'posts_per_page\'=> \'8\'
);
我不明白为什么这对我不起作用,如果有任何见解,我将不胜感激。谢谢