
※当サイトにはプロモーションが含まれています。

検索結果から固定ページの記事を除外したいにゃ
ワードプレス(WordPress)で作成したサイトの大きな利点の一つは、検索機能の充実です。
なぜなら、ワードプレスはデータベースと連携しており、通常のHTMLやCSSだけで作成されたサイトでは実現しにくい高度な検索機能を備えているからです。
ただ、固定ページには“問い合わせフォーム”や“プライバシーポリシー”などが含まれることが多いため、検索結果に表示されるのを避けたい場合もあるかもしれません。
今回は、検索結果に固定ページが表示されるのを回避する方法についてです。
ワードプレスの検索結果から固定ページを除外する方法
ワードプレスの検索結果から固定ページを除外する方法についてです。
下記のコードを、function.phpに記述します。
function exclude_pages_from_search($query) {
if ($query->is_search() && !is_admin()) {
$query->set('post_type', 'post');
}
return $query;
}
add_action('pre_get_posts', 'exclude_pages_from_search');
is_search()で、検索結果ページかどうかを判定しています。
!is_admin()で、管理画面の検索には影響を与えないように制御しています。
$query->set(‘post_type’, ‘post’)を設定し、検索対象を投稿ページのみに限定しています。
これで、WordPressの検索結果に固定ページが表示されることがなくなりました。

検索結果から除外したい投稿ページがある場合はどうすればいいにゃ
その場合は、下記のような形で、検索結果から除外したいIDを指定します。
function exclude_pages_and_specific_posts_from_search($query) {
if ($query->is_search() && !is_admin()) {
// 投稿タイプを "post" のみに設定(固定ページを除外)
$query->set('post_type', 'post');
// 検索結果から除外したい投稿・固定ページのID
$exclude_ids = array(10, 20, 30); // 除外したいIDをここに追加
// 除外IDを検索クエリに適用
$query->set('post__not_in', $exclude_ids);
}
}
add_action('pre_get_posts', 'exclude_pages_and_specific_posts_from_search');
これで、「固定ページ+除外したい投稿ページ」を検索結果から除外することができると思います。
なお、固定ページや投稿ページには、それぞれ番号が割り振られています。
番号の確認方法は色々とありますが、テーマに依存しない共通の方法としては、次の方法があります。
投稿や固定ページのタイトルにマウスを重ねると、ブラウザのステータスバー(画面の左下や右下)にURLが表示されます。
そのURLの中に post=1111 のように post= の後に表示される番号がページIDです。
例えば、上記の例で言えば、2030がページIDなので、この記事を検索から除外したい場合は、下記の箇所を書き換えます。
$exclude_ids = array(2030); // 除外したいIDをここに追加
なお、これはワードプレスの機能なので、基本的にどのテーマでも使用する事ができると思いますが、独自の検索機能を持っているテーマやプラグインなどと競合する可能性があります。
その際は、それらの用意されている機能から設定することになると思います。
function.phpの場所は?
function.phpは、だいたいどのテーマも、
外観 > テーマエディター
にあります。

テーマエディターに移動したら、編集するテーマが、現在、使用しているテーマかを確認しましょう。
問題なければ、「function.php」を選択します。

なお、function.phpに記載する際に、ブラウザ上で全角から半角に変換すると、エンコーディング(文字コード)の関係で、不具合が発生することがあります。
その為、編集する時は、メモ帳などに貼り付けたものを編集をしてからペーストするようにしましょう。
選択したら、一番下に以下のコードを追加します。
function exclude_pages_from_search($query) {
if ($query->is_search() && !is_admin()) {
$query->set('post_type', 'post');
}
return $query;
}
add_action('pre_get_posts', 'exclude_pages_from_search');
最後に、「ファイルを更新」ボタンで、保存(更新)します。
※function.phpの設定を失敗すると、最悪、サイトが表示されなくなります。
その為、コードを追加する際は、必ずバックアップを取ってから追加するようにしてください。