WordPress 標準の検索を無効化する方法

WordPress には標準で「検索機能」が備わっています。サイト全体の記事を対象に検索できる便利な機能ですが、コーポレートサイトやランディングページなど、検索が不要なケースも少なくありません。今回は WordPress 標準の検索を無効化する方法 を解説します。


なぜ検索を無効化するのか?

  • 不要な機能を隠したい
    検索対象の記事がないサイトでは、空検索や意図しないページ遷移が発生します。
  • セキュリティ・運用面の理由
    検索クエリを使った不正アクセス(SQLインジェクションを狙う攻撃など)の入口になることもあるため、使わない機能は閉じておくのが安全です。
  • ユーザー体験の統一
    ナビゲーション導線を絞り、不要なUI(検索フォーム)を非表示にすることで、デザインや導線をシンプルに保てます。

実装コード

以下のコードを functions.php に追加することで、標準の検索機能を無効化できます。

<?php
// WordPress 標準の検索を無効化
add_action('parse_query', function ($query) {
    if (!is_admin() && $query->is_search()) {
        // 検索判定を false にする
        $query->is_search = false;

        // 必要なら 404 扱いにする場合
        // $query->is_404 = true;
    }
});

// 検索フォームウィジェットや get_search_form() も停止したい場合
add_filter('get_search_form', '__return_empty_string');

コードの解説

  1. parse_query フック
  • フロント側(管理画面以外)で $query->is_search が true になった場合、それを false に変更。
  • これにより、検索クエリ(?s=xxx)を送っても検索結果ページが動作しなくなります。
  1. $query->is_404 を true にする場合
  • 検索リクエストを強制的に 404 ページへリダイレクトしたい場合はこちらを有効化します。
  • 例えば企業サイトでは「検索ページ」自体を存在させない設計にしたいときに有効です。
  1. get_search_form フィルター
  • 検索フォームの出力を空文字列に置き換えるため、get_search_form() や標準ウィジェットで検索フォームが表示されなくなります。

実用上の注意点

  • テーマやプラグインが独自検索を利用している場合
    WooCommerce など、検索を前提にした機能を利用していると不具合が発生するため注意してください。
    (例:商品検索が動作しなくなる)
  • 404 にするか否かの判断
    単に「検索結果ページを空にしたい」のか、「ページ自体を存在させたくない」のかで $query->is_404 の設定を切り替えましょう。
  • 将来的な拡張
    検索機能を完全に捨てるのではなく、「独自検索」や「外部検索サービス(Google カスタム検索など)」に切り替える場合、このコードは一時的な対策としても役立ちます。

まとめ

WordPress 標準の検索を無効化するには、parse_query フックで検索判定を無効化し、必要に応じてフォームの出力も止めるのが基本です。
検索機能が不要なサイトでは、この設定を入れておくことでセキュリティ面や運用効率の向上が期待できます。

コメント

タイトルとURLをコピーしました