// upcoming events
function listing_filter_function($date_args){
$date_args = array(
'post_type' => 'evento',
'meta_key' => 'start_date',
'posts_per_page' => -1,
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query'=> array(
array(
'key' => 'start_date',
'compare' => '>=',
'value' => date("Ymd"),
'type' => 'DATE'
)
),
);
return $date_args; } add_filter('listing_filter', 'listing_filter_function');
// events archive
function archive_filter_function($date_args){
$date_args = array(
'post_type' => 'evento',
'meta_key' => 'start_date',
'posts_per_page' => -1,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_query'=> array(
array(
'key' => 'start_date',
'compare' => '<',
'value' => date("Ymd"),
'type' => 'DATE'
)
),
);
return $date_args; } add_filter('archive_filter', 'archive_filter_function');
在此过滤器中,事件使用开始日期排序,但我还需要检查结束日期以防止持续超过一天的事件在第一天之后显示在存档部分
提前致谢!
答案 0 :(得分:0)
你可以像这个例子一样使用 meta_query 关系
'meta_query'=> array(
'relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '>='
'value' => date("Ymd"),
'type' => 'DATE'
),
array(
'key' => 'end_date',
'compare' => '<'
'value' => date("Ymd"),
'type' => 'DATE'
),
)
对于存档,您可以检查 end_date 是否小于今天或等于或小于 (<=)
编辑以回答评论中的问题,这是在将答案标记为正确后提出的。请注意,我不是 100% 的,因为我正在准备关于此方法的混合结果,所以如果它有效,请告诉我们,以便我可以更新以反映结果
'meta_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '>'
'value' => date("Ymd"),
'type' => 'DATE'
),
array(
'key' => 'end_date',
'compare' => '<'
'value' => date("Ymd"),
'type' => 'DATE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '>'
'value' => date("Ymd"),
'type' => 'DATE'
),
array(
'key' => 'end_date',
'value' => '1',
'compare' => 'NOT EXISTS'
),
),
),
答案 1 :(得分:0)
它终于起作用了!
我做了一些改变:
'meta_query'=> array('relation' => 'OR',
array('relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '<',
'value' => date("Ymd"),
'type' => 'DATE'
),
array(
'key' => 'end_date',
'value' => '',
'compare' => '='
),
),
array('relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '<',
'value' => date("Ymd"),
'type' => 'DATE'
),
array(
'key' => 'end_date',
'compare' => '<',
'value' => date("Ymd"),
'type' => 'DATE'
),
),
),