Wordpress

WordPressのサイト内検索が全角スペースだとダメ、半角区切りならOK?ープラグイン無しで解決する方法。

サイト内リンクを張る際に、あの記事どこに書いたっけ?と思いサイト内に設置しているWordpress標準のサイト内検索を行ったところうまくいかない...
絞込検索で「ワードA ワードB」とAND検索をかけたいのになぜ?
そして気が付いた、キーワード間の区切りを”半角スペース”にするとうまく動作する。
プラグイン無しでこの問題に対応して解決しましたと言う話。

WordPressサイト内検索を全角区切り対応にする方法

プラグインを増やしたくないので、functions.phpにて対応します。

WordPress標準のサイト内検索の動作

サイト内検索の動作確認をするために「あいうえおWordpressかきくけこ 12345 検索!」というタイトルの記事を作成。
本文は「Wordpressサイト内検索テスト中!」としてみました。

wordpressサイト内検索全角対応方法2記事タイトルをAND検索してみようと「あいうえお かきくけこ」というキーワードで検索!
wordpressサイト内検索全角対応方法3検索結果0・・・

続いて「あいうえお かきくけこ」と半角区切り(スペース)で検索をしてみた。
wordpressサイト内検索全角対応方法4ちゃんとテスト記事が検索結果に出た。

う~んと思って色々調べたところ、プラグインの【WP Multibyte Patch】を入れると解決するとのこと。
で入れてみたんですけど、ある問題が発生。
日本語タイトルでアップロードした画像ファイルの名前がおかしいこと(数字の羅列)になりました...SEO的にあんまりよろしくないと思ったのでこのプラグインは削除!
プラグイン過多はトラブルの元になりうるし、高速化の観点でも少ないほうが良いと思うので...

本題!functions.phpにコードを追加して解決する

素晴らしい先人たちが同じ問題をfunctions.phpにコードを追加することで解決してくれていましたので知識を拝借させていただきました。
参考サイト:ゆるりの足あと

//検索全角スペース対応
function empty_search( $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', 'empty_search' );

上記のソースコードをfunctions.phpに追記します。
動作としては検索窓の検索ボタンを押したときに全角スペースを半角スペースへと変換するようです。
wordpressサイト内検索全角対応方法5コードの追加が終わったら保存してサイト内検索を再度行ってみます。

wordpressサイト内検索全角対応方法6検索キーワードを全角スペースで区切ってもうまく半角スペースに変換されてから検索されるようになり、うまく記事が検索できました!

↓ちなみに検索は記事タイトルだけでなく、記事本文も検索対象となっているようです。

wordpressサイト内検索全角対応方法7

全角半角、カタカナ、ひらがな対応

例えば「トマト」というキーワードが入った文章を書いた記事があったとして「とまと」と検索しても「トマト」と検索しても検索結果に表示できちゃう素晴らしいコードを公開している方もおられました。
全角半角区切りのみならず、カタカナ、ひらがなでの検索に対応しているとのことですのでご紹介しておきたいと思います。
参考サイト:Likiroku

まとめ

意外と盲点になりがち?なサイト内検索ってユーザービリティー的にはカテゴリやタグよりも重要かもしれないですね。
サイトに来てくれたユーザーさんが一つでも多くの記事を見てくれ、回遊率が上がるように使いやすいサイト内検索を心がけましょう・w・
検索に関しては標準装備のサイト内検索+チューニングで十分だと思っているので、プラグインレスで実装しました。サイト軽量化にもなるかな?

-Wordpress
-

© 2020 ソロ学