我有以下query\\u参数来获取事件:->;要么是单个事件(仅开始日期),因此它会检查开始日期是否介于月初和月末之间->;或者它是一个持续时间事件(开始+结束日期),因此它检查开始日期是否小于月初,结束日期是否大于月初(-gt;如果事件当前正在进行,则输出)
$args = array(
\'numberposts\' => -1,
\'post_type\' => \'event\',
\'orderby\' => \'meta_value\',
\'meta_query\' => array(
\'relation\' => \'OR\',
// single event
array(
\'relation\' => \'AND\',
array(
\'key\' => \'date_start\',
\'value\' => $firstDayThisMonth,
\'compare\' => \'>=\'
),
array(
\'key\' => \'date_start\',
\'value\' => $lastDayThisMonth,
\'compare\' => \'<=\'
)
),
// duration event
array(
\'relation\' => \'AND\',
array(
\'key\' => \'date_start\',
\'value\' => $firstDayThisMonth,
\'compare\' => \'<=\'
),
array(
\'key\' => \'date_end\',
\'value\' => $firstDayThisMonth,
\'compare\' => \'>=\'
)
)
),
\'order\' => \'ASC\'
);
这在我的dev服务器上运行得非常完美,但在生产环境中,它不再输出任何事件。我必须删除//duration事件数组才能输出单个事件,但这两个查询不能一起工作。有什么想法吗?
SO网友:Mike van den Hoek
我的声誉太低,无法发表评论,所以我会这样做。
确保“value”中的日期格式与数据库字段中的日期格式相同。也不要忘记添加“type”=>;\'查询的日期。我过去使用过的一些代码的一个示例:
$queryArgs[\'meta_query\'] = [
[
\'relation\' => \'OR\',
[
\'key\' => \'_ys_brochures-offline-date\',
\'value\' => date(\'Y-m-d\'),
\'compare\' => \'>\',
\'type\' => \'DATE\' // notice the \'DATE\'
],
[
\'key\' => \'_ys_brochures-offline-date\',
\'compare\' => \'NOT EXISTS\',
],
]
];