tax_query内のoperatorのINとANDをtaxonomy別で使い分ける方法
-
初めまして。
現在wordpressを使い始めて1ヶ月も経っていないのですが、検索で悩んでいます。
やりたい事は下記のようなものなのですが、チェックボックスやセレクトのmultipleで複数選択を行った際に
tax_query内に指定した’operator’=>’IN’をtaxonomy項目別で’operator’=>’AND’に出来ないかと悩んでいます。例えば
taxonomy項目1内をチェックボックスまたはセレクトのmultipleで「slugA,slugB,slugC」を選択しtaxonomy項目2内をチェックボックスまたはセレクトのmultipleで「slugA,slugB,slugC,slugD」を選択。
ここまではいずれかと合致したもので良いので’operator’=>’IN’で良いのですが、taxonomy項目3内の条件を「slugA,slugB,slugC」こちらの全て合致したものを出力させたいと思い’operator’=>’AND’にしたいです。
下記参考サイトの内容だと全て’operator’=>’IN’となってしまうので
「slugA,slugB,slugC」のいずれかが合致するものまで出力されてしまいます。参考サイト
カスタムタクソノミーを使った複雑な条件検索
と
私的マニュアル現在私が使用しているコードになります。
HTML内<form mephod="get" action="/"> <dl> <dt>taxonomy項目1を選択</dt> <dd> <select name="taxonomy項目1[]" multiple="multiple"> <option disabled="disabled">taxonomy項目1を選択</option> <?php $terms = get_terms('taxonomy項目1'); foreach ($terms as $term): ?> <option value="<?php echo esc_html($term->slug); ?>"><?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </dd> <dt>taxonomy項目2を選択</dt> <dd> <select name="taxonomy項目2[]" multiple="multiple"> <option disabled="disabled">taxonomy項目2を選択</option> <?php $terms = get_terms('taxonomy項目2'); foreach ($terms as $term): ?> <option value="<?php echo esc_html($term->slug); ?>"><?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </dd> <dt>taxonomy項目3を選択</dt> <dd> <select name="taxonomy項目3[]" multiple="multiple"> <option disabled="disabled">taxonomy項目3を選択</option> <?php $terms = get_terms('taxonomy項目3'); foreach ($terms as $term): ?> <option value="<?php echo esc_html($term->slug); ?>"><?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </dd> </dl> <input type="submit" value="検索"/> </form>
受け側 こちらはそのまま使用させていただいています
<?php if($_GET){ $qarr = array( 'numberposts' => 10, 'post_status' => 'publish', 'post_type' => 'post名', 'tax_query' => array( 'relation' => 'AND', ) ); foreach( $_GET as $key => $value ) { array_push($qarr["tax_query"],array( 'taxonomy' => $key, 'field' => 'slug', 'terms' => $value, 'operator'=>'IN' //この部分をINとANDに変えたいと思っています。 )); } } else { $qarr = ''; } ?> <?php $myposts = get_posts($qarr); ?>
アドバイスなどご教授いただければと思います。
宜しくお願い致します。
- トピック「tax_query内のoperatorのINとANDをtaxonomy別で使い分ける方法」には新たに返信することはできません。