ここでは、WordPressのサイト内検索をアレンジしたい方が予備知識として知っておいた方がよいパラメータについてお話します。私が検索フォームについて知らなかったときに教えて欲しかった内容ですので、ぜひ参考にしてみてください。
検索フォームとリクエストパラメータ
WordPressの検索フォームで使われるinputタグやselectタグのコードを見てみると、name属性やvalue属性が入っているのに気がつくと思います。
例えば、代表的な検索ワードを入力するinputタグの場合、
<input type="text" value="" name="s" id="s" />
name属性に”s”、空のvalue属性にはユーザーが入力したキーワードが入る形になっています。このname属性とvalue属性の2つの属性が検索結果で表示される投稿をコントロールする要素なのです。
例えば、これで仮に検索を行うと、name属性とキーワードがそれぞれ下記のような形で検索結果のURLに反映されます。
これは「アルパカ」というキーワードで検索した結果を表しています。
この「s=キーワード」の左側の”s”がパラメータ、右側がその値になります。WordPressにはこのような検索結果をコントロールするパラメータが他にも備わっていて、これらを組み合わせることで検索結果を自由にカスタマイズすることができます。つまり、検索結果をアレンジしたいというのは、このパラメータを扱いたいということと同義なのです。
ちなみに、”s”というパラメータは検索結果のテンプレート「search.php」を表示させるために必須となりますので覚えておいてください。
このように、URLの末尾に追加するパラメータのことを「リクエストパラメータ」とか「URLパラメータ」と呼ぶそうです。WordPressは検索条件をGET送信という方式で行っているため、パラメータの受け渡しがURLの末尾に追加される仕組みになっています。
検索で使えそうなパラメータには他にも下記のようなものがあります。
WordPressのリクエストパラメータ
パラメータ | 役割 |
---|---|
post_type | 投稿タイプのスラッグ |
cat | カテゴリーID |
category_name | カテゴリースラッグ |
tag | タグのスラッグ |
orderby | 投稿の表示順を決める基準 |
order | 順番(ASC/DESC) |
検索フォームを作る前に、実際に上記のパラメータをURLに加えて検索結果をコントロールできるかやってみてください。”s”というパラメータは必ず必要になりますので、
という形で「&」のあとにパラメータをつなげていきます。
もしも、キーワードは指定したくない場合は、
という形でキーワードを削除します。
例えば、
というURLの場合、「送料無料」というキーワードで、「product」というカスタムタイプ内をタイトルを基準に「あいうえお順」で表示させて検索という意味になります。
WordPressのパラメータについては下記に詳しく載っていますので、良かったら参考にしてみてください。
WordPress Codex 日本語版|パラメータ
(※いろいろ試してみましたが、すべてが使えるわけではなさそうです)
もしもWordPressに目的とするパラメータがない場合、オリジナルのパラメータを作って、そのデータをsearch.phpに渡して、そこで変数などを使ってループの条件に組み込めむことになりますが、その辺りはまた次回お話したいと思います。
以上がサイト内検索の仕組みとURLに付けるパラメータのお話でした。