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の主な機能
- 投稿抜粋を文字数ベースに変更する
- 検索時の全角スペースのを区切り文字として認識させる
- アップロードファイルの日本語名をサニタイズする