我使用高级自定义字段将字段添加到事件自定义帖子类型。
相关字段为event_date
和feature_event
。
帖子按event_date排序,并使用feature_event选择特色事件,如果选中复选框"是"选择事件显示在特色部分,如果没有,则显示下一个最近的事件。
使用此代码设置并正常工作:
$args=array(
'post_type' => 'event',
'post_status' => 'publish',
'posts_per_page' => 1,
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'feature_event',
'value' => 'yes',
'compare' => 'LIKE'
)
)
);
我还将剩下的事件排序在另一个查询中,如果事件日期已经过去,事件不再显示,则设置并使用此代码正常工作,我发现here :
$today = date("Y-m-d");
$args = array(
'post_type' => 'event',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'event_date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'datetime'// you can change it to datetime also
)
)
);
我被困的地方是我想要第一个查询来显示特色事件,但是如果日期已经过去没有显示该事件,与上面的第二个查询相同,基本上将两者结合起来查询。
我已经尝试将第二个数组添加到meta_query,但即使过了一天,事件仍会显示它是否被选为特色事件。
$today = date("Y-m-d");
$args=array(
'post_type' => 'event',
'post_status' => 'publish',
'posts_per_page' => 1,
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'feature_event',
'value' => 'yes',
'compare' => 'LIKE'
),
array(
'key' => 'event_date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'datetime'
)
)
);
有人能告诉我合并这两个查询的正确方法吗?
答案 0 :(得分:1)
亲自尝试.....只需在最终代码中使用“和”代替“或”,并在那里放置条件。
e.g。
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'feature_event',
'value' => 'yes',
'compare' => 'LIKE'
),
array(
'key' => 'event_date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'datetime'
),
array(
'key'=>'blah',
etc
)
)