【问题标题】:Wordpress - meta_query - Possible to use multiple or nested meta_query arguments?Wordpress - meta_query - 可以使用多个或嵌套的 meta_query 参数吗?
【发布时间】:2011-08-18 14:48:44
【问题描述】:

我正在使用 wordpress 的 meta_query 来尝试构建一个基本的事件系统。

每个事件都有许多元键/值。例如:

Start Date
End Date
Ongoing (Yes/No)

我想区分正在进行 (Ongoing = Yes) 和 Not Ongoing (Ongoing = No) 的事件。

然后在我的 Ongoing events 中,我想将以下事件分开:

  1. 两周内开始或两周内结束
  2. 已经开始并结束超过两周

我的问题在于案例 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'
            )
        )
    );

仅返回 Ongoing 开始并且在接下来的两周内结束的事件。如果我将关系更改为 OR,那么它也会显示未进行的事件。有没有办法实现我的需要?

【问题讨论】:

    标签: wordpress logic meta custom-fields


    【解决方案1】:

    由于 meta_query 目前是编写的,我 99% 确定这是不可能的。

    可以做的就是为 Ongoing 创建一个(可能是私有的)自定义分类法,它就像一个布尔值并且只使用一个术语('yes' 或 '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'
            )
        )
    );
    

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 2013-09-18
      • 2015-01-01
      • 1970-01-01
      • 2015-09-04
      相关资源
      最近更新 更多