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