2016-03-04 108 views
0

我试图运行WP_Query为了搜索我的数据库中的所有产品与多个元值。Wordpress WP_Query与meta_key多个meta_values

例如

  • 产品1 - > meta_key [ 'KEY1'] - > meta_value [ 'VALUE1']
  • 产品2 - > meta_key [ 'KEY1'] - > meta_value [ '值2']
  • 产品3 - > meta_key [ '键1'] - > meta_value [ '值3']

所以我想这三个products.My参数都是

$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 
); 

回答

0

你应该使用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 
); 

希望它能帮助!