wordpressカスタム検索

Wordpressのcategoryを使ったカスタムsearch検索のソースです。
formでname="s"があるとsearch.phpに渡されます。今回は、
<input type="hidden" name="s">としてsは使わずに
name="cat1[]"  name="cat2[]" name="cat3[]" と3つのグループに選択肢を入れて検索します。valueにはカテゴリ番号を入れます。
下のプログラムですが
cat1のグループはOR検索、どれかを含んでいるもの
cat2のグループはAND検索、すべて含んでいるもの
cat3のふるーぷはNOT検索、指定されたカテゴリは除く

$cat1=$_REQUEST['cat1'];
$cat2=$_REQUEST['cat2'];
$cat3=$_REQUEST['cat3'];
$args['tax_query']['relation']='AND';
if(!empty($cat1)) {
       $args['tax_query'][] =  array(
               'taxonomy' => 'category',
               'field'    => 'id',
               'terms' => $cat1,
               'operator' => 'IN',
       );
}
if(!empty($cat2)) {
       $args['tax_query'][] =  array(
               'taxonomy' => 'category',
               'field'    => 'id',
               'terms' => $cat2,
               'operator' => 'AND',
       );
}
$args['tax_query'][] =  array(
       'taxonomy' => 'category',
       'field'    => 'id',
       'terms' => $cat3,
       'operator' => 'NOT IN',
);
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args =  array_merge($args,array(
   'post_type' => array('post'),
   'post_status' => array('publish'),
   'order'=>'asc',
   'orderby'=>'post_name',
   'paged' => $paged,
   'posts_per_page' => 4
));
$query = new WP_Query($args);

この記事が気に入ったらサポートをしてみませんか?