WordPressの検索結果から固定ページを除外する方法

WordPressの検索機能を使うと、デフォルトでは投稿記事だけでなく固定ページも検索結果に表示されます。
しかし「ブログ記事検索」だけにしたい場合や「お知らせ記事だけを検索対象にしたい」という場合には、固定ページを除外した方が使いやすくなります。

functions.phpにコードを追加する

検索結果から固定ページを除外するには、テーマ(または子テーマ)の functions.php に以下のコードを追加してください。


// 検索結果から固定ページを除外
function exclude_pages_from_search($query) {
    if ($query->is_search() && $query->is_main_query() && !is_admin()) {
        $query->set('post_type', 'post'); // 投稿だけを対象にする
    }
}
add_action('pre_get_posts', 'exclude_pages_from_search');
  

ポイント解説

  • $query->is_search() → 検索結果ページかどうか確認
  • $query->is_main_query() → メインのクエリだけに適用
  • !is_admin() → 管理画面検索には影響を与えない
  • $query->set('post_type', 'post') → 投稿(post)のみ検索対象に設定
応用:
$query->set('post_type', array('post', 'news')); のようにすれば
投稿タイプ postnews だけを検索対象にすることもできます。

(例)
固定ページを検査結果から除外する

検索プラグイン

検索はテーマに付属しているデフォルトのものは2つ以上の単語で検索するAND検索に弱い為「Ajax Search Lite」プラグインを使用しております。

「Ajax Search Lite」プラグイン

まとめ

WordPressの検索結果から固定ページを除外する方法を紹介しました。

  • functions.phpにコードを追加するだけで簡単に実装可能
  • ユーザーにとって「不要な固定ページ」が検索に出てこなくなる
  • 応用すれば特定のカスタム投稿タイプだけを検索対象にできる

ブログ運営において、検索結果を最適化することはユーザー体験を高める大切な工夫です。ぜひ試してみてください。