'category__in' => array()のような結果を取得するには、tax_queryをどのように設定する必要がありますか?
具体的には、次のいずれかのIDを使用して、市の分類からの用語が含まれるすべての投稿を表示します。$cities = array(23,34,45,56);
これは私が現在使用しているコードです。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'meta_query' => array(
array(
'key' => 'mar_bedrooms',
'value' => $bedroomss,
'compare' => 'IN'
),
array(
'key' => 'mar_property_for',
'value' => $property_forss,
'compare' => 'IN'
),
array(
'key' => 'mar_price',
'value' => array( $price_min, $price_max ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
),
'post_status'=>'publish',
'post_type'=>'post',
//'cat' => 1,
'category__in'=> $type,
//'taxonomy__in'=> $city,
'orderby'=>'date',
'order'=>'DESC'
);
query_posts($args);
if ( have_posts() ) {
the_post();
$a = 1;
}
カテゴリと一般的な分類法の動作方法により、これはできません。カテゴリーは分類法の一種であるため、カテゴリーを照会する場合は1レベル下の照会を行います。 category__in => array()
に対してクエリを実行すると、実際にcategory_terms
がクエリされたものを検索し、それらすべてのカテゴリの投稿をクエリします。これで、この効果を模倣できます。
$terms_in = array(23,34,45,56);
$taxonomy_terms = get_terms( array( 'city' ), array(
'orderby' => 'none',
'hide_empty' => 1,
'include' => $terms_in
) );
foreach ( $taxonomy_terms as $term ) :
$args = array(
'taxonomy' => $term->slug,
'post_status' => 'publish',
'posts_per_page' => -1,
);
$term_name = $term->slug;
$query = new WP_Query( $args );
while( $query->has_posts() ) :
$query->the_post();
// DISPLAY HERE
endwhile;
endforeach;
wp_reset_postdata();
上記のコードはあなたの特定の質問のために編集されました。
3日間の調査の結果、taxonomy_inをシミュレートする良い方法を見つけました。
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'mar_bedrooms',
'value' => $bedroomss,
'compare' => 'IN'
),
array(
'key' => 'mar_bathrooms',
'value' => $bathroomses,
'compare' => 'IN'
),
array(
'key' => 'mar_property_for',
'value' => $property_forss,
'compare' => 'IN'
),
array(
'key' => 'mar_price',
'value' => array( $price_min, $price_max ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
),
'tax_query' => array(
array(
'taxonomy' => 'city',
'field' => 'id',
'terms' => $city, //$city can be also an array
'operator' => 'IN'
)
),
'post_status'=>'publish',
'category__in'=> $type, //$type can be also an array
'orderby'=>'date',
'order'=>'DESC'
);
$the_query = new WP_Query( $args );
if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post();
wp_reset_query();
wp_reset_postdata();