サポート » 使い方全般 » 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別で使い分ける方法」には新たに返信することはできません。