【WordPress】サイト内検索で全角スペースを有効化する

WordPressのサイト内検索は、2単語以上のキワードで検索する時、全角スペースで区切ると全角スペースが文字として認識され、検索がうまくいかない。そのため、キーワードを半角スペースで区切るしかない。

そこで、よく導入されるのがWP Multibyte Patch

WP Multibyte Patchを有効化すると、全角スペースを半角スペースへ置換して検索するようになる。

しかし今回は、プラグイン無しでサイト内検索時に全角スペースを有効化する。

プラグイン無しでサイト内検索で全角スペースを使用できるようにする

全角スペースを半角に置換するため、functions.phpに下記のコードを追記する。

function search_replace_space($query) {
  if ($query->is_main_query() && $query->is_search && !$query->is_admin) {
    $s = $query->get('s');
    $s = str_replace(' ', ' ', $s);
    $query->set('s', $s);
  }
}
add_action('pre_get_posts', 'search_replace_space');

コードの解説は以下のとおり。

pre_get_postsを使って、読み込み前に全角空白を半角空白に置き換えています。

https://yululy.com/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%97%E3%83%AC%E3%82%B9%E3%81%AE%E5%85%A8%E8%A7%92%E7%A9%BA%E7%99%BD%E3%81%A7%E6%A4%9C%E7%B4%A2%E7%B5%90%E6%9E%9C%E3%81%8C%E3%81%8A%E3%81%8B%E3%81%97%E3%81%84%E4%BB%B6/

検索キーワードを全角スペースで区切れるようになったので、WP Multibyte Patchをアンインストールした。

WP Multibyte Patchの主な機能

  • 投稿抜粋を文字数ベースに変更する
  • 検索時の全角スペースのを区切り文字として認識させる
  • アップロードファイルの日本語名をサニタイズする