2016-10-19 19 views
0

wordpressでOR条件を作成しようとしていますが、WP_Query($ args)でクエリ生成に何の効果も見せていません。ワードプレスクエリ。ワードプレスのOR条件が機能していない

if ($params) { 
      extract($params); 
      $args['meta_query'] = array(
       'relation' => 'OR' 
      ); 
      if (isset($keywords)) { 
       $args['meta_query'][] = array(
       'meta_key' => 'eltd_listing_address', 
       'meta_value' => $keywords, 
       ); 
      } 
      if (isset($type)) { 
       if($type !== '' && $type !=='all'){ 
        $args['meta_query'][] = array(
        'meta_key' => 'eltd_listing_item_type', 
        'meta_value' => $type, 
        ); 
       } 
      } 
      if (isset($number)) { 
       $args['posts_per_page'] = $number; 
      } 


      $args['tax_query'] = array(
       'relation' => 'AND' 
      ); 

      if (isset($category)) { 
       if($category !== '' && $category !=='all'){ 
        $args['tax_query'][] = array(
         'taxonomy' => 'listing-item-category', 
         'field' => 'term_id', 
         'terms' => (int)$category 
        ); 
       } 
      } 

      if (isset($location)) { 
       if($location !== '' && $location !=='all'){ 
        $args['tax_query'][] = array(
         'taxonomy' => 'listing-item-location', 
         'field' => 'term_id', 
         'terms' => (int)$location 
        ); 
       } 
      } 

      if (isset($tag)) { 
       $args['tax_query'][] = array(
        'taxonomy' => 'listing-item-tag', 
        'field' => 'term_id', 
        'terms' => (int)$tag 
       ); 
      } 

     } 

     $query = new WP_Query($args); 

私が$ query-> requestに表示すると、このように見えます。 $ argsをで

は、私は私がOR条件を取得していない午前ここ

Array 
(
    [post_type] => listing-item 
    [post_status] => publish 
    [meta_query] => Array 
     (
      [relation] => OR 
      [0] => Array 
       (
        [meta_key] => eltd_listing_address 
        [meta_value] => Carrer de la Princesa, 24-26, 08003 Barcelona, Spain 
       ) 

      [1] => Array 
       (
        [meta_key] => eltd_listing_item_type 
        [meta_value] => 277 
       ) 

     ) 

    [posts_per_page] => 12 
) 




SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'listing-item' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 12 

を取得します。

私はワードプレスでやり方を考えていません。どんな解決策も高く評価されます。

+0

'あなた' $のargs'変数をprint_r'し、それが保持しているかどうかを確認になり...各キーのためのあなたのメタクエリの比較引数を設定する必要がありますそれが保持していると思う情報。 – RST

+0

$ argsには、クエリでやりたいすべての値が入っていますが、クエリに表示されず、目的のデータが得られません – jaw

+0

その出力を投稿に追加できますか? – RST

答えて

0

あなたはとても

 if (isset($keywords)) { 
      $args['meta_query'][] = array(
      'meta_key' => 'eltd_listing_address', 
      'meta_value' => $keywords, 
      ); 
     } 
     if (isset($type)) { 
      if($type !== '' && $type !=='all'){ 
       $args['meta_query'][] = array(
       'meta_key' => 'eltd_listing_item_type', 
       'meta_value' => $type, 
       ); 
      } 
     } 

 if (isset($keywords)) { 
      $args['meta_query'][] = array(
      'meta_key' => 'eltd_listing_address', 
      'meta_value' => $keywords, 
      'compare' => '=', 
      ); 
     } 
     if (isset($type)) { 
      if($type !== '' && $type !=='all'){ 
       $args['meta_query'][] = array(
       'meta_key' => 'eltd_listing_item_type', 
       'meta_value' => $type, 
       'compare' => '=', 
       ); 
      } 
     } 
関連する問題