我正在处理即将发生的事件列表。我创建一个自定义帖子类型,带有自定义字段:event_start_date。我还有一些多日扩展事件,由附加自定义字段定义: event_end_date 。
我有一个代码,可以很好地处理 start_date 晚于今天的事件。但我未能合并 end_date 条件。我尝试使用具有 OR 关系的元查询,但目前不起作用:
$args = array(
'post_type' => 'events',
'posts_per_page' => 4,
'orderby' => 'event_start_date',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'OR',
array('key' => 'event_start_date',
'value' => date('m/d/Y', strtotime('-1 day')),
'compare' => '>='),
array('key' => 'event_end_date',
'value' => date('m/d/Y', strtotime('-1 day')),
'compare' => '>=')
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
// Rest of the loop
提前致谢。
注意:我还有另一个查询,可以完美选择仅开始日期 > 而非当前日期的事件。
$args = array(
'post_type' => 'events',
'posts_per_page' => 4,
'meta_key' => 'event_start_date',
'meta_value' => date('m/d/Y', strtotime('-1 day')),
'meta_compare' => '>=',
'orderby' => 'event_start_date',
'order' => 'ASC',
); // The same loop and query
最佳答案
实际上,要按元键排序,meta-key
必须出现在查询中,并使用 meta_value
作为 orderby
值。
$args = array(
'post_type' => 'events',
'posts_per_page' => 4,
'meta_key' => 'event_start_date', // required to be used in orderby
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'event_start_date',
'value' => date('m/d/Y'),
'compare' => '>'
),
array(
'key' => 'event_end_date',
'value' => date('m/d/Y'),
'compare' => '>'
)
),
'orderby' => 'meta_value', // orderby will use the value of meta_key
'order' => 'asc',
);
$loop = new WP_Query($args);
您还可以在每个元查询数组中使用类型,如下所示
array(
'key' => 'event_end_date',
'value' => date('m/d/Y'),
'compare' => '>',
'type' => 'DATE' // to specify the type of the field/value
)
更新:您应该使用 date('m/d/Y')
和 'compare' => '>'
并进行确保您的日期格式正确,因为现在是(月/日/年)。 date('m/d/Y', strtotime('-1 day'))
也会显示过去的日期。
如果其他一切都正确,这应该可以工作。 Read Here .
关于wordpress - 简单的 WP 查询即将发生的事件以及开始或结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813322/