複合検索のプラグインにはいろいろとありますが、無料で、わかりやすくて良いものというのが意外と無いんですよね。
かなり凝った複合検索であれば、多少の出費は目を瞑らなければならないのかもしれませんが「カテゴリーとキーワード」のみの複合検索であれば、プラグインなしでも簡単にいけちゃいます。
- 検索フォーム用のファイルを用意(コピペでOK)
- function.phpにショートコード読み込み用ソースを追加(コピペでOK)
- カスタムHTMLウィジェットにショートコードを書き込む(1行のみ)
具体的にはこんな感じです。
検索フォーム用のファイル
<form method="get" action="<?php bloginfo('url'); ?>"> <?php wp_dropdown_categories('show_option_none=カテゴリを選択'); ?> <input name="s" id="s" type="text" placeholder="キーワードを入力"> <input id="submit" type="submit" value="検索"> <input id="reset" type="reset" value="リセット"> </form>
上記のコードをそのままウィジェットに書き込めれば良いのですが、カテゴリーリストの表示部分がphpになっているためカスタムHTMLウィジェットには書き込めません。
ウィジェットでphpを扱えるようにするプラグインもあるにはあるのですが、安全性と速度を考えると、あまりおすすめできるものではありません。
そこで、上記ソースをファイルとして用意しておき、それをカスタムHTMLウィジェットでショートコードとして呼び出せるようにするため、function.phpに以下を追加します。
function.phpへの追加
この場合、ショートコードを[searchform]、読み込むファイル(上記)をsearchform.phpとしています。
add_filter( 'widget_text', function( $ret ) { $php_file = 'searchform'; if( strpos( $ret, '[' . $php_file . ']' ) !== false ) { add_shortcode( $php_file, function() use ( $php_file ) { get_template_part( $php_file ); }); ob_start(); do_shortcode( '[' . $php_file . ']' ); $ret = ob_get_clean(); } return $ret; }, 99 );
カスタムHTMLウィジェットにショートコードを書き込む
ショートコードは、カスタムHTMLウィジェットに[searchform]と書き込むだけです。
すると、このように表示されます。