WordPressサイト内に検索欄を設置してるけど、全角スペースを使うと上手く検索できなくて不便・・・。解決方法はないのかな。
このような方向けの記事になります。
検索で全角スペースを使う方法
方法①の「WP Multibyte Patch」というプラグインは日本語サイトを運営するのに必須のプラグインなので、基本的にはこちらの方法で対応するのが良いと思います。
方法①:WP Multibyte Patchを導入する
手順は下記の通りです。
- ①:「WP Multibyte Patch」をインストール
- ②:「WP Multibyte Patch」を【有効化】する
- ③:完了!設定などは不要です。
プラグインを入れるだけなので簡単に対応できます。
①:「WP Multibyte Patch」をインストール
WordPressの管理画面から【プラグイン】の【新規追加】を開き「WP Multibyte Patch」と検索して、上の画像のプラグインをインストールしましょう。
②:「WP Multibyte Patch」を【有効化】する
インストール後は忘れずに【有効化】をしておきましょう。
③:完了!設定などは不要です。
以上で全角スペースで検索できるようになりました!
WordPressはデフォルトでは英語なので、日本語の場合ですと文字化けが起きたりなどと不具合が生じやすいのですが「WP Multibyte Patch」を導入するだけで、日本語表示などの不具合などを一括して対応する事ができます。
日本語サイトを運営するのに必須のプラグインになりますので、現在はインストールしていない方はこれを機に導入しておきましょう。
方法②:functions.phpにコードを追加する【プラグインなし】
プラグインなしで対応する方法です。
functions.phpにコードを追加するだけになります。
こちらのコードを「functions.php」に追加する
functions.php/* 検索の全角スペース対応 */ function search_space($query){ if ( is_admin() || ! $query->is_main_query() ){ return; } if( $query->is_search ) { $formtxt = $query->get( 's' ); $formtxt = str_replace(' ',' ',$formtxt); $query->set('s',$formtxt); } } add_action('pre_get_posts','search_space');
上記のコードを「functions.php」にペシっと貼り付けるだけで、全角スペースでも検索できるようになります。
簡単なコード解説
pre_get_postsというアクションフックを使用して実装しています。
とても簡単な処理で「全角スペースがあった場合に半角スペースに置き換える」という命令をしているだけです。
PHPif ( is_admin() || ! $query->is_main_query() ){ return; }
上記の部分で、まずは管理画面とメインクエリではない場合は実行しないように記述しています。実行してしまうとエラーの元になります。
PHPif( $query->is_search ) { $formtxt = $query->get( 's' ); $formtxt = str_replace(' ',' ',$formtxt); $query->set('s',$formtxt); }
検索ページの場合に「フォームに入力した文字列を取得して、その中に全角スペースがあった場合は半角スペースに置き換えるよ」という処理をしています。
pre_get_postsのについて詳しく知りたい方は下記に参考にリンクを記載しときますので、確認してみてください。