サイト内検索で固定ページを除外し投稿のみを検索結果に出す方法です。
Wordpressのサイト内検索は「投稿記事」+「固定ページ」が検索範囲です。
お問い合わせやプロフィール、サイトポリシーなどに使用するのが固定ページですので、基本的にはサイト内検索には含む必要性がありません。
サイト内検索から固定ページを除外する
Wordpress標準の検索機能は固定ページも検索対象になります。
何もカスタマイズしていなければ、お問い合わせページやプロフィールページが検索に引っかかります。

タイトルは管理人プロフィール
当サイトでは自己紹介の下にある「もっと読む」で固定ページを使用しおり、ページタイトルは「管理人プロフィール」として作成しています。
このどうでもいいページがサイト内検索でキーワードに引っかかると表示されるので、固定ページを検索結果から除外するようにします。
Wordpressのサイト内検索にはタイトルだけでなく本文も含まれるため、意外と簡単に検索結果に引っかかったりしますので…
固定ページを検索結果から除外するコード
以下のソースコードをfunctions.phpに追記します。
//固定ページ検索除外 function my_posy_search($search) { if(is_search()) { $search .= " AND post_type = 'post'"; } return $search; } add_filter('posts_search', 'my_posy_search');
このコードでサイト内検索から固定ページが除外されます。
検索結果の表示画面で投稿タイプがpostであるページのみを表示するコードです。
子テーマ内にあるfunctions.phpにコードをコピペすればOKです!
固定ページが検索に引っかからないか確認
コードの保存、更新が終わったら動作確認してみましょう!
先ほどと同じキーワード「管理人プロフィール」で検索してみます。
固定ページのタイトルである「管理人プロフィール」で検索した検索結果が0になり、検索結果から固定ページが除外されていることが分かります。
また、固定ページの本文に含まれるキーワードで検索しても表示されなくなります。
まとめ
- Wordpress標準のサイト内検索では固定ページも検索対象となる。
- 記事内の文章も検索範囲に含まれる。
- 固定ページを除外するには投稿タイプをpostのみにする。
固定ページはランディングページではないので除外しておいた方が使いやすいと個人的には思います。検索エンジンに対してもno indexが基本ですしね・w・
そもそもサイト内検索自体そんなに使用されないと思われますが…
ポイント
Wordpressのサイト内検索は全角スペースでの複数検索に対応していません。
簡単に対応できるのでまだの方は是非チェックして下さい↓