ワードプレスの絞り込み検索を作成しています。
フリーキーワードとカテゴリー入力欄が2つあり、それぞれカテゴリーを選択し検索した場合 OR検索ではなくAND検索としたいのですが
検索ページには
<form method="get" id="searchform" action="<?php echo home_url(); ?>" > <select name="cat" class="list-box"> <option value='' disabled selected style='display:none;'>カテゴリー1</option> <?php $categories = get_terms( 'category', array( 'orderby' => 'count', 'hide_empty' => 0, 'child_of' => 1個目の親カテゴリー, ) );foreach($categories as $value):
?>
<option value="<?php echo $value->term_id; ?>"><?php echo $value->name;?></option> <?php endforeach; ?> </select> <select name="cat" class="list-box"> <option value='' disabled selected style='display:none;'>カテゴリー2</option> <?php $categories = get_terms( 'category', array( 'orderby' => 'count', 'hide_empty' => 0, 'child_of' => 2個目の親カテゴリー, ) );foreach($categories as $value):
?>
<option value="<?php echo $value->term_id; ?>"><?php echo $value->name;?></option> <?php endforeach; ?> </select> <a><input class="send-btn" type="submit" title="検索する" value="検索する"></a> <input name="s" id="s" type="text" class="free-word" placeholder="フリーワード"> </form>functions.php には
function my_pre_get_posts_search( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
if ( $query->is_search ) {
$cats = get_query_var('cat');
$cat_array = explode( ',', $cats );
$query->set( 'category__and', $cat_array );
}
}
}
add_action( 'pre_get_posts','my_pre_get_posts_search' );
とし検索自体は動作するのですが結果はOR検索のままです。
search.phpに切り替わった際のURLに表示される引数が、サイトURL/cat=〇&cat=〇&s= となりますが
これが サイトURL/cat=〇,〇&s= であればANDの結果が表示されます。
functions.phpに追記したものが効いていないのかよくわからないのですが、cat=〇&cat=〇 を
cat=〇,〇 に変更する方法はありますでしょうか?
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/21 01:58
2019/03/21 02:23
2019/03/21 05:58
2019/03/21 13:52
2019/03/21 14:16
2019/03/21 14:41