WordPressで複数の投稿タイプがある場合、特に設定しないと検索は各投稿合わせて行われます。
投稿タイプを指定して、その投稿内のみで検索する方法を調べました。
サンプルコード
まずは文字列で検索するフォームを実装してみます。
PHP
<form method="get" action="<?php echo home_url(); ?>"> <input type="search" name="s" id="s"> <input type="submit" id="searchsubmit" value="検索"> </form>
post先はトップページで、文字列のnameはsにするだけでOKです。
ただ、これだけだと検索した時に各投稿タイプを合わせた検索結果になります。
検索対象の投稿タイプを指定したい場合、inputを1つ追加するだけで実装できます。
PHP
<form method="get" action="<?php echo home_url(); ?>"> <input type="hidden" name="post_type" id="post_type" value="post"> <input type="search" name="s" id="s"> <input type="submit" id="searchsubmit" value="検索"> </form>
nameをpost_typeにして、valueはデフォルトの投稿を対象にしたいのでpostにしています。
先ほどは投稿タイプを固定にしたかったのでtypeをhiddenにしていますが、selectなどで投稿タイプを選択できるようにすることもできます。
PHP
<form method="get" action="<?php echo home_url(); ?>"> <select name="post_type"> <option value="">選択してください</option> <option value="post">デフォルトの投稿</option> <option value="news">カスタム投稿タイプ(news)</option> </select> <input type="search" name="s" id="s"> <input type="submit" id="searchsubmit" value="検索"> </form>
【参考サイト】
コメントが承認されるまで時間がかかります。