我正在使用一个事件插件,努力使我的数据库查询变得完美。查询是在单一事件上进行的。php模板。我需要查询执行的操作:
查询即将发生的事件的“事件”自定义帖子类型_event_start_date
meta\\u键显示最早日期(最近的事件)不显示过去的事件如果是“当前事件”,则显示下一个最近的事件这是我当前的$参数。
<?php $args = array(
\'post__not_in\' => array($donotrepeat),
"post_type" => \'event\',
\'meta_key\' => \'_event_start_date\', // name of custom field
\'orderby\' => \'meta_value_num\',
"order" => \'ASC\',
"posts_per_page" => 1
);
?>
定义
$donotrepeat
早些时候
$donotrepeat = get_the_ID();
到目前为止,查询成功
查询自定义帖子类型忽略“当前”事件,按最早日期排序不过,我不知道如何忽略“过去”的日期。这个插件还创建了另一个元键“scope”,其中包含“过去”和“未来”等值,所以这很有希望。
我曾尝试使用meta\\u query对过去的日期问题进行排序,但似乎无法使其正常工作。我认为这可能是一条路,但我对其他想法持开放态度。我相信这没那么难。。。有人能帮忙吗?
最合适的回答,由SO网友:vancoder 整理而成
你很接近,但我不会被“scope”元键分心。以下内容未经测试。
<?php
$args = array(
\'post__not_in\' => array($donotrepeat),
"post_type" => \'event\',
\'meta_key\' => \'_event_start_date\', // name of custom field
\'orderby\' => \'meta_value\',
"order" => \'ASC\',
"posts_per_page" => 1,
\'meta_query\' => array(
array(
\'key\' => \'_event_start_date\',
\'value\' => date(\'Y-m-d\'),
\'compare\' => \'>=\',
\'type\' => \'DATE\'
)
),
);
?>
meta\\u键仅用于排序-meta\\u查询控制实际选择。
请注意,我保留了your posts\\u per\\u页面的原样,即使这样会将选择限制为一条记录。