検索結果ページで特定の投稿タイプのみを対象にしたい

WordPressでは、検索機能を使った場合、投稿タイプ(post_type)を指定しなければ、デフォルトでanyが指定されます。これは、リビジョンやexclude_from_searchがtrueの投稿タイプを除いた、すべての公開投稿タイプが検索対象になることを意味します。

そのため、意図しない投稿タイプ(例:固定ページや他のカスタム投稿タイプなど)も検索結果に含まれてしまうことがあります。

今回は、特定の投稿タイプだけを検索対象にする方法をご紹介します。

functions.phpに以下のコードを追加

function my_filter_search_query($query) {
  if($query->is_search() && $query->is_main_query() && !is_admin()) {
    $query->set('post_type', ['aaa', 'bbb']);
  }
}
add_action('pre_get_posts', 'my_filter_search_query');

このコードにより、検索クエリが実行される際に、投稿タイプがaaaとbbbのみに絞られます。

参考サイト