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'));
のようにすれば投稿タイプ
post
と news
だけを検索対象にすることもできます。
(例)
検索プラグイン
検索はテーマに付属しているデフォルトのものは2つ以上の単語で検索するAND検索に弱い為「Ajax Search Lite」プラグインを使用しております。
まとめ
WordPressの検索結果から固定ページを除外する方法を紹介しました。
- functions.phpにコードを追加するだけで簡単に実装可能
- ユーザーにとって「不要な固定ページ」が検索に出てこなくなる
- 応用すれば特定のカスタム投稿タイプだけを検索対象にできる
ブログ運営において、検索結果を最適化することはユーザー体験を高める大切な工夫です。ぜひ試してみてください。