blog

program

1行書くだけ!WordPressで検索ボックスを複数設置して投稿タイプごとに検索する方法

弊社のインバウンドサイトに新たにヒルメシマエブログが加わりました。
web業界の雑学・面白ネタなど、お昼ごはんを食べながら軽~い気持ちで読んでいただける記事をアップしていく予定ですので、是非ご購読ください。

と、いきなり宣伝から入ってしましましたが、WordPressの構築時に少し苦戦しました。
というのも、インバウンドとヒルメシマエ、両方のサイドナビにそれぞれの検索ボックスを設置すべし! という代表からのお達しがあったのです。

ご存知の通りWordPressの検索ボックスは「searchform.php」を読み込めば表示されるものが1つ準備されているのみ……。
検索結果ページについても、search-post.phpのようなテンプレートは残念ながら準備されていません。

これはちょっと厳しいんじゃないか、なんて思って調べてみたら、ありました。get_search_formにしっかりと。
いやぁ~知らんかったぁ~

唐突に回答コード

3行目に注目です。
なんと、hiddenフィールドで投稿タイプを指定するだけでOKなんですね。

この「投稿タイプを指定するだけ」というのがミソで、

  1. value属性とname属性の値が検索結果URLのクエリパラメータに渡される
  2. パラメータがWP_Queryのpost_typeオプション値に渡される

という段階を経て検索されるため、「post」を指定しても固定ページは含まれないし、カスタム投稿タイプにも対応できるという親切設計。
なんて優しいんだWordPress!

記述を1回で済ませる

上記のコードのままでは投稿タイプの数だけvalue属性の値を変えた検索ボックスのソースを記述する必要がありますが、
下記のコードをsearchform.phpに書いておけば使いまわしが利きます。

get_post_type()」は、現在表示されているページの投稿タイプを取得します。

ヒルメシマエブログをどうぞよろしく

という訳で、無事に検索ボックスも設置できたヒルメシマエブログをどうぞよろしくお願いいたします!
ガンガン検索して面白い記事を発見してください。

エンジニアのBayashiでした。