解 説

検索機能はウィジェットを使用すれば簡単ですが、少しカスタマイズしようとなると自分で作成しなければなりません。

ノーマルな検索ボックスの作成とその仕組み

サーチボックスはinputタグで簡単に作成できます。
問題はWordPressの検索機能の仕組みです。一見難しそうですが、仕組みを利用するのはアドレスをうまく使えば簡単にできます。

検索用のURLはサイトアドレスの後に「?s=検索キーワード」をつけるだけです。あとはWordPressが検索してくれます。
この仕組みさえ解れば自作のサーチボックスを動かすことができます。

具体的なコードです。

ポイントはactionにphpでecho home_url(); としてサイトアドレスを呼び出します。php終了後に/を入れています。
ここのサイトだと itstudio.co/ となります。
次に「?s=検索キーワード」部分はname=“s”とすることでsubmitボタンをクリックするとgetでinputタグに入力された値が検索キーワードとなって送られます。
ここのサイトだと 「itstudio.co/?s=検索キーワード」の状態になってくれます。
つまりinput type=”search” name=“s”のサーチボックスに入力した値が検索されることになるのです。

上記のコードのサーチボックスは使い回しをできるように別ファイルとして保存します。
ファイル名は「searchform.php」とします。
「searchform.php」を呼び出すテンプレートタグは以下です。

検索ボックスで検索した後その結果を表示するテンプレートはテンプレート階層に従って「search.php」が無ければ「index.php」で表示されます。
「search.php」は作成しておいた方が良いでしょう。

「search.php」のコード例です。

カテゴリ内の検索を表示したい

あるカテゴリ内だけの検索を表示したい場合はURLはサイトアドレスの後に「?s=玉子&cat=4」をつけるだけです。これもformタグ内にselectタグなどでname=”cat”として値に選択したいカテゴリを設定しておきます。以下具体的なコードです。

検索の出口でWP_Queryをカスタマイズするよりも入り口で指定してしまえばよいという考え方です。