日本語ページと英語ページに対応した企業サイトを作成した際に、検索フォームをそのまま使うと検索結果に日本語と英語が混在してしまい悩んだことがある。もちろん日本語ページで検索した場合には日本語のみ、英語ページでは英語のみの結果がヒットしなければならない。
検索フォームにhiddenパラメータを追加することで、検索範囲を絞ることができる。前述の企業サイトではデフォルトは日本語の記事で、英語の記事には”英語”というカテゴリをチェックする決まりにしていたので、検索範囲としてカテゴリを指定すればよいことが分かった。
具体的には、英語ページのみ対象としたい場合は検索フォームの中に以下を追加する。
[PHP]
term_id; ?>” name=”cat” />
[/PHP]
カテゴリ以外にも投稿タイプなどを指定することができる。例えばデフォルトでは記事とページが検索対象となっているので、記事のみ検索したい場合は、以下の指定になる。
[PHP]
[/PHP]
これらを組み合わせて指定することもできる。ただしこのように検索フォームに記述した場合は、GETパラメータとしてURLに見えてしまう。これが格好悪いとするなら、search.phpのループ前にquery_posts()で条件を加える方法もあるだろう。