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のみに絞られます。