Wordpress - meta_query - 可以使用多个或嵌套的 meta_query 参数吗?

标签 wordpress logic meta custom-fields

我正在使用 wordpress 的 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% 确定这是不可能的。

    为了解决这个问题,您可以做的是为 Ongoing 创建一个(可能是私有(private)的)自定义分类法,它的行为就像一个 bool 值,并且只使用一个术语("is"或“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'
            )
        )
    );
    

    关于Wordpress - meta_query - 可以使用多个或嵌套的 meta_query 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109390/

    相关文章:

    css - 手机上的奇怪堆栈

    php - 单选按钮未按选中状态显示

    java - UVa #494 - 正则表达式 [^a-zA-z]+ 使用 Java 分割单词

    javascript - 仅当元标记存在时才显示 div

    html - 浏览器不显示西类牙语字符

    jQuery fadeIn 和 slideUp 延迟

    php - 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (13)

    c# - 如何结合 "IF"条件使用技巧?(C# ASP.NET)

    mysql - 在我的数据库表中查找重复项的最佳方法是什么

    html - 元标记:我使用名称还是ID?