摘要
在我的Wordpress版本中,我有一个由自定义事件帖子组成的日历。这些帖子有两个设置,单日活动和多日活动。设置为布尔值。我需要抓住这些帖子,并根据它们的日期对它们进行排序。
问题
我面临的问题是,当我查询后端时,我不知道要按哪个日期排序。我尝试使用布尔值创建一种“如果那么”的逻辑,但是没有运气。
故障排除
到目前为止我尝试了什么?
这是我一直试图开始工作的查询。虽然没有运气
$events_query = new WP_Query (array(
'post_type' => 'events',
'posts_per_page' => '-1',
'meta_query' => array (
'relation' => 'AND',
array (
'key' => 'multiple_day_event',
'value' => '1',
'compare' => '=',
),
array (
'key' => 'start_date',
'value' => date("Ymd"),
'compare' => '>',
),
'relation' => 'OR',
array (
'key' => 'multiple_day_event',
'value' => '0',
'compare' => '=',
),
array (
'key' => 'date',
'value' => date("Ymd"),
'compare' => '>',
)
)
));
我可以使用一个日期而不是两个单独的日期吗?
不,据我所知。使用单个日期代替这两个日期会在后端导致其他问题。
解决方案
简而言之,我需要一个能够使用OR
,AND
,OR
逻辑的查询。有什么想法吗?
答案 0 :(得分:1)
根据WP_Meta_Query
文档:
嵌套数组可用于构造复杂的查询
$meta_query_args = array(
'relation' => 'OR', // Optional, defaults to "AND"
array(
'key' => '_my_custom_key',
'value' => 'Value I am looking for',
'compare' => '='
),
array(
'relation' => 'AND',
array(
'key' => '_my_custom_key_2',
'value' => 'Value I am looking for 2',
'compare' => '='
),
array(
'key' => '_my_custom_key_3',
'value' => 'Value I am looking for 3',
'compare' => '='
)
)
);
$meta_query = new WP_Meta_Query( $meta_query_args );
所以您的示例如下所示:
$events_query = new WP_Query( array(
'post_type' => 'events',
'posts_per_page' => '-1',
'meta_query' => array (
'relation' => 'AND',
array(
'relation' => 'AND',
array (
'key' => 'multiple_day_event',
'value' => '1',
'compare' => '=',
),
array (
'key' => 'start_date',
'value' => date("Ymd"),
'compare' => '>',
),
),
array(
'relation' => 'OR',
array (
'key' => 'multiple_day_event',
'value' => '0',
'compare' => '=',
),
array (
'key' => 'date',
'value' => date("Ymd"),
'compare' => '>',
)
)
)
) );