Wordpress:検索フォームを設置する

Wordpressの検索フォームを設置するためには、決まり事があります。今までは独自に検索フォームを作ってWP_Queryに組み込む方法をしていたのですが、勉強も含めて通常のループで表示できる検索フォームをまとめてみようと思います。

WordPress:検索フォームを設置する

作成日
2014/11/05
更新日
2016年8月16日

WordPressの検索フォームを設置するためには、決まり事があります。今までは独自に検索フォームを作ってWP_Queryに組み込む方法をしていたのですが、勉強も含めて通常のループで表示できる検索フォームをまとめてみようと思います。
余談ですが、キーワードは1600文字以内と制限されているみたいですね。「Fairly insane upper bound for search string lengths.」と書いてあるように、非常識な文字数ではあります。

検索フォームの設置

まずは検索フォームの設置になります。テンプレートにする場合は、「searchform.php」として保存します。ヘッダーなどのテンプレートにformを書き込んでも動作します。
逆に、Wordpressの検索を動作させるためには以下のような決まり事があります。

  1. 検索キーワードとなるinputの「name」は「s」にする( <input type="text" name="s" />
  2. フォームはホームにgetで飛ばす( <form method="get" action="<?php echo home_url( '/' ); ?>">
  3. labelをつける

しかし、3)をしなくても動作しているため、必要性が分かりません。環境によっては動かなくなるのでしょうか。
分かりませんが、基本的な検索フォームは以下のようになるかと思います。

カテゴリーを制限する

検索をかけるカテゴリーを制限したいときもあるかと思います。例えば、WelCartを利用していて商品カテゴリーのみ検索をかけたいときなどです。

特定のカテゴリー
特定のカテゴリーのみを検索結果に表示する場合です。「value」にはカテゴリーIDを入れます。
複数のカテゴリー
カテゴリのIDをコンマで区切ることで複数の指定をすることが出来ました。
チェックボックスにしたいと思い、nameを「cat[]」にして配列を果たすとWarningが出てしまいました。やはりチェックボックスにしたい場合は、jQueryで動作させるか、検索結果の際にWP_Queryを使うなどの工夫が必要なのかもしれません。

検索結果の表示

検索フォームの結果は「search.php」が適用されます。もしない場合は「index.php」になります。

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Category

Archive