検索機能について
-
投稿者投稿
-
2018年4月24日 11:55 AM #8567845rpm参加者
よろしくお願い致します。
その他トピックで良いのか、迷いましたが、こちらで投稿させていただきます。
Squareテーマを使用しているのですが、
絞り込み検索機能を独自で
header.phpの設置したい任意の場所に下記コードを入れました。
<form method=”get” action=”<?php bloginfo( ‘url’ ); ?>”>
<input type=”hidden” name=”s” id=”s”>
<?php wp_dropdown_categories(‘name=cat[]&include=1,2&depth=0&orderby=name&hide_empty=0&show_option_all=▽カテゴリAを選択’); ?>
<?php wp_dropdown_categories(‘name=cat[]&include=3,4&depth=0&orderby=name&hide_empty=0&show_option_all=▽カテゴリBを選択’); ?>
<?php wp_dropdown_categories(‘name=cat[]&include=5,6&depth=0&orderby=name&hide_empty=0&show_option_all=▽カテゴリCを選択’); ?>
<br />
<input id=”submit” type=”submit” value=”検索” />
</form>そこで、検索結果を見てみると、どうやら OR検索になっているようです。
例えば、下記のような商品を登録している場合
商品001→カテゴリ1にチェック、カテゴリ3にチェック
商品002→カテゴリ1にチェック、カテゴリ4にチェック
検索項目一つ目にカテゴリ1を、検索項目二つ目にカテゴリ3を選択した状態で検索すると
結果は、商品001と商品002がヒットします。
おそらく、カテゴリ1 or カテゴリ3という検索結果?
目標としている検索結果は、カテゴリ1でもあり、カテゴリ3でもある
商品001だけのヒット表示なのですけれども。AND検索になるのかな?こういった感じにすればどうすればよろしいのでしょうか?
よろしくお願い致します。2018年4月24日 1:09 PM #8567945rpm参加者補足です。
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’ );
と記入したことにより、
AND検索になったようです。
しかし、今度は、3つある全ての検索項目を入れないと、全くヒットしないです。3つの検索項目のうち、選択したものだけを、検索の値に渡すっていう工程をしないと
ダメらしい感じです。その場合は、どうなるのでしょうか?
2018年4月26日 9:22 PM #8568945rpm参加者色々、ググったり、いじったりしてますが、さっぱり、訳が分からなくなってきたのでここでリセットしてみようと思います。
目標
サイドバーに
カテゴリのドロップボックスを3つ置きます。
そして、検索ボタン。
ここまで設置することはできました。
<form method=”get” id=”searchform” action=”<?php bloginfo(‘url’); ?>”>
これで、行けるかどうかは、未確認ですが・・・
この3つのドロップボックスから、複合検索?絞り込み検索を
行いたいのです。or 検索ではなく、and 検索です。イメージとしては、商品カテゴリー複合検索の簡易版みたいなイメージです。
商品カテゴリー複合検索ページの全てのカテゴリではなく、3つのドロップボックスでの構成です。通常の検索ウィジェットみたいな使い方です。ただ、通常の検索ウィジェットとは異なり、カテゴリーで複合検索って感じです。まずは、ヒントをお願いしたいです。
よろしくお願い致します。2018年4月30日 10:34 AM #8569345rpm参加者なんとか、うまくできるようになりました。
ありがとうございます。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。