2017-10-13 7 views
2

meta_queryとtax_queryの組み合わせを使って投稿を取得しようとしていますが、両方を組み合わせて投稿を取得できませんでした。tax_queryとmeta_queryの組み合わせで投稿が得られない

以下は私のコードです。

<?php 
      $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
      $args = array(
         'post_type' => 'tm-property', 
         'posts_per_page'=>-1, 
         'meta_or_tax' => TRUE,       
         'paged' => $paged, 
         'order'    => 'DESC', 

         'tax_query' => array(
              array(
              'taxonomy' => 'tm-property_type', 
              'field' => 'term_id', 
              'terms' => $id 
              ) 
            ), 


         'meta_query'  => array(
         'relation' => 'AND',      
           array(
            'key'   => '_tm_property_bedrooms', 
            'value'  => $min_bed, 
            'compare'  => '=', 
           ), 

           array(
            'key'   => '_tm_property_bathrooms', 
            'value'  => $min_bath, 
            'compare'  => '=', 
           ),             
        ),         
      ); 

      $custom_posts = new WP_Query($args); 

      ?> 

空の配列があります。

また、タクソノミがない投稿のリストが必要です。

たとえば、5つの投稿、2つの投稿に分類があり、他の3つには分類がありません。

したがって、タクソノミの名前を選択すると、選択したタクソノミーの投稿が表示されます。タクソノミーを選択しないとメタ値のみを選択すると、タクソノミーがない投稿が表示されます。

meta_queryとtax_queryの組み合わせを使用して投稿を取得することはできますか?

+0

の引数の下にこれを試してみてください。クエリが生成するSQLは何ですか( 'print $ custom_posts-> request;')? – janh

+0

$ custom_posts->リクエストと過去のクエリをmy_sqlに出力しましたが、空の結果が得られました。 –

+0

これは変です。 'var_export($ custom_posts)'はどうでしょうか? – janh

答えて

0

それが可能だクエリ

<?php 
$category_object  = get_queried_object(); 
$category_taxonomy  = $category_object->taxonomy; 
$category_term_id  = $category_object->term_id; 

$min_bed = array('1000', '4000'); 
$min_bath = array('2000', '3200'); 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'type'    => 'tm-property', 
    'post_status'  => 'publish', 
    'posts_per_page' => 10, 
    'paged'    => $paged, 
    'caller_get_posts' => -1, 
    'meta_query'  => array(
           'relation' => 'AND',      
           array(
            'key'   => '_tm_property_bedrooms', 
            'value'  => $min_bed, 
            'type' => 'numeric', 
            'compare' => 'BETWEEN', 
           ), 
           array(
            'key'  => '_tm_property_bathrooms', 
            'value' => $min_bath, 
            'type' => 'numeric', 
            'compare' => 'BETWEEN', 
           ),             
          ),  
    'tax_query'   => array(
          array(
          'taxonomy' => 'tm-property_type', 
          'field' => 'id', 
          'terms' => $category_term_id 
          ) 
         ), 
    'orderby'   => 'name',    
    'order'    => 'DESC',      
); 
$custom_posts = null; 
$custom_posts = new WP_Query($args); 

if($custom_posts->have_posts()) : 
    while ($custom_posts->have_posts()) : $custom_posts->the_post(); 
     echo get_the_title($post->ID); 
    endwhile; 
endif; 
wp_reset_query($custom_posts); 
?> 
+0

空の配列がまだ取得されています。 –

+0

キー "_tm_property_bedrooms"& "_tm_property_bathrooms")または "tm_property_bedrooms"& "tm_property_bathrooms"?チェックしてください。 –

+0

キーはsemeであり、 "_tm_property_bedrooms"の値は1000-4000で、_tm_property_bathroomsの値は2000-3200の間です –

関連する問題