Wordpress WP_Query 与 meta_key 的多个 meta_values

Posted

技术标签:

【中文标题】Wordpress WP_Query 与 meta_key 的多个 meta_values【英文标题】:Wordpress WP_Query with multiple meta_values for a meta_key 【发布时间】:2016-03-04 14:38:50 【问题描述】:

我正在尝试运行 WP_Query,以便在我的数据库中搜索具有多个元值的所有产品。

例如

产品 1 -> meta_key['key1'] ->meta_value['value1'] 产品 2 -> meta_key['key1'] ->meta_value['value2'] 产品 3 -> meta_key['key1'] ->meta_value['value3']

所以我想获得所有三种产品。我的论点是

$args = array(
        'post_type' => 'product',
        'posts_per_page' => 2,
        'orderby'    => 'title',
        'order'      => 'ASC',
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key'     => 'key1',
                'value'   => 'val1',
                'compare' => '='
            ),
            array(
                'key'     => 'key1',
                'value'   => 'val2',
                'compare' => '='
            ),
            array(
                'key'     => 'key1',
                'value'   => 'val3',
                'compare' => '='
            ),
        ),
        'paged' => $paged
        );

问题是没有产品被退回。相反,如果只给一个 meta_key => meta_value 对它工作正常

$args = array(
    'post_type' => 'product',
    'posts_per_page' => 2,
    'orderby'    => 'title',
    'order'      => 'ASC',
    'meta_key' => 'key1',
    'meta_value' =>'val1',
    'paged' => $paged
);

【问题讨论】:

【参考方案1】:

您应该使用IN 作为compare 值,如下所示:

$args = array(
    'post_type' => 'product',
    'posts_per_page' => 2,
    'orderby'    => 'title',
    'order'      => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'key1',
            'value'   => array('val1','val2','val3'),
            'compare' => 'IN',
        ),
    ),
    'paged' => $paged
);

希望对你有帮助!

【讨论】:

以上是关于Wordpress WP_Query 与 meta_key 的多个 meta_values的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - 在类别存档中使用 wp_query - 如何显示适当的类别?

php WP_Query与Meta_Query

当前时间之后事件的WordPress WP_Query查询事件发布类型

WP_Query 与 meta_query 和自定义字段的值为 0

在WordPress中显示循环外的自定义字段

比较WP_Query中以序列化数组形式存储的meta_value