BLOGブログ

WordPressの検索で投稿タイプを指定する方法

デフォルトでは、投稿ページも固定ページもどちらも検索対象になっていますが、検索対象を指定したいときってありますよね。そこで今回は、投稿タイプを指定して検索する方法を紹介します。

方法その1:functions.phpに追記

テーマのfunctions.phpに次のコードを追記します。

function SearchFilter($query) {
  if ($query->is_search) {
    $query->set('post_type', 'post');
  }
return $query;
}
add_filter('pre_get_posts','SearchFilter');

3行目で投稿タイプを指定します。投稿ページならpost、固定ページならpage、カスタム投稿ならそのカスタム投稿名を指定します。

方法その2:テンプレートに追記

テンプレートを直接いじるパターンがこちら。検索フォームに隠し要素で条件を追加します。

<form id="search" method="get" action="<?php echo home_url( '/' ); ?>">
  <input type="text" value="<?php the_search_query(); ?>" name="s">
  <input type="hidden" value="post" name="post_type" id="post_type">
  <input type="submit" value="Search">
</form>

3行目で投稿タイプを指定します。

おまけ:検索機能を拡張するプラグイン「Search Everything」

投稿タイプの指定こそできませんが、検索機能を拡張するプラグインにSearch Everythingというのがあります。

高度なカスタマイズができるプラグイン「Searh Everything」

このプラグインを使うと、カテゴリー説明文やカスタムフィールドを検索対象にしたりできます。また、投稿IDやカテゴリーを指定して検索から除外することもできます。