【问题标题】:Wordpress WP_Query with multiple meta_values for a meta_keyWordpress WP_Query 与 meta_key 的多个 meta_values
【发布时间】: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
);

【问题讨论】:

    标签: php mysql metadata wordpress


    【解决方案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
    );
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2016-03-22
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多