2016-03-04 131 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 
); 

希望它能幫助!