Wordpress - meta_query - 可能使用多个或嵌套的meta_query参数?
问题描述:
我正在使用wordpress的meta_query来尝试构建一个基本的事件系统。Wordpress - meta_query - 可能使用多个或嵌套的meta_query参数?
每个事件都有一些元键/值。例如:
Start Date
End Date
Ongoing (Yes/No)
我要分开是正在发生的事件(正在进行=是),而不是持续的(持续=否)。
然后我正在发生的事件中,我要分开是事件:
- 起两个星期内,两个星期
- 已经开始内即将结束,两周以上
结束我的问题在于案例1,其实质上是:
(Start Date <= Two Weeks OR End Date <= Two Weeks) AND Ongoing == YES
使用WP_Query,我有以下几点:
$ongoingSoon = array(
'category_name' => 'event',
'meta_key' => 'End Date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'Start Date',
'value' => $today,
'compare' => '>='
),
array(
'key' => 'End Date',
'value' => $nexttwoweeks,
'compare' => '<='
),
array(
'key' => 'Ongoing',
'value' => 'Yes'
)
)
);
其中仅返回,在未来两周内开始和还结束持续事件。如果我将关系更改为OR,那么它显示的事件也不是正在进行。有没有办法实现我所需要的?
答
由于目前正在编写meta_query,我99%确定无法做到这一点。
什么你可以做的就是周围是创造持续(可能是私人)自定义分类,其作用类似于一个布尔值,而且永远只使用一个学期(“是”或“1”或其他)。然后,您的WP_Query将更改为如下所示:
$ongoingSoon = array(
'category_name' => 'event',
'meta_key' => 'End Date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'Start Date',
'value' => $today,
'compare' => '>='
),
array(
'key' => 'End Date',
'value' => $nexttwoweeks,
'compare' => '<='
)
),
'tax_query' => array(
array(
'taxonomy' => 'ongoing',
'field' => 'slug',
'terms' => 'yes'
)
)
);