WordPressの検索を投稿タイプ別にする

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>

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

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

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930