Wordpress標準のサイト内検索を行ったところうまくいかない...
絞込検索で「ワードA ワードB」とAND検索をかけたいのにスペースを入れても検索にヒットしません。もしかしてサイト内検索は複数検索できないの?
と思ったのですがキーワード間の区切りを”半角スペース”にしたところうまくいきました。どうやら全角スペースではダメなようです。
WordPressサイト内検索で複数検索に対応する
色々調べたところ、プラグインの【WP Multibyte Patch】を入れると解決するとのことで入れてみたのですが、ある問題が発生しました。
日本語タイトルでアップロードした画像ファイルの名前がおかしく(数字の羅列)になりました。iPadで稀に日本語ファイルの画像が表示できない事があるらしく、これに対応するためだと思われます。
SEOの面を考慮しても意味不明な数字の羅列がファイル名になるのは気に入らなかったのでプラグインは使わず、functions.phpで対応しました。
プラグイン過多はトラブルの元になりうるし、高速化の観点でも少ないほうが良いのでfunctions.phpでうまく動作すれば一石二鳥です♪
WordPressの検索で全角区切りが効かない
まずは全角スペースが効かない様子から…
サイト内検索の動作確認をするために、
「あいうえおWordpressかきくけこ 12345 検索!」
というタイトルの記事を作成しました。
本文は「Wordpressサイト内検索テスト中!」としました。
「あいうえお かきくけこ」というキーワードで検索してみます。
複数キーワードで記事タイトルが引っかかればOKなのですが…
検索結果は0件!!
次に「あいうえお かきくけこ」と半角区切り(スペース)で検索をしてみます。
ちゃんとテスト記事が検索結果に表示されました。
Wordpressのサイト内検索の区切りは半角スペースしか対応していないようです。
そこで検索ボタンが押された時に全角スペースが入っている場合、全角を半角に置換することで疑似的に全角スペースにも対応させるという方法が有名なようです。
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に追記します。
こんな感じですね。場所はどこでもOKです。
これで検索窓の検索ボタンを押したときに全角スペースを半角スペースへと変換し、複数キーワードでの検索に対応させることができます。
コードの追加が終わったら保存してサイト内検索を再度行ってみます。
検索キーワードを全角スペースで区切ってもうまく半角スペースに変換されてから検索されるようになり、うまく記事が検索できました!
検索は記事タイトルだけでなく、記事本文も検索対象となっているようです。
全角半角、カタカナ、ひらがな対応
サイト内検索の拡張では更にひらがなで検索してもカタカナで検索しても検索結果に表示させるコードもありました。
例えば「トマト」というキーワードが入った文章を書いた記事があったとして「とまと」と検索しても「トマト」と検索しても検索結果に表示できちゃう素晴らしいコードを公開している方もおられました。
上記の全角半角区切りのみならず、カタカナ、ひらがなでの検索に対応しているとのことですのでご紹介しておきます。
サイトによっては実装しておくと便利そうですね・w・
外部リンク
参考サイト様:Likiroku
まとめ
意外と盲点になりがち?なサイト内検索ってユーザービリティー的にはカテゴリやタグよりも重要かもしれないですね。
サイトに来てくれたユーザーさんが一つでも多くの記事を見てくれ、回遊率が上がるように使いやすいサイト内検索を心がけましょう・w・
検索に関しては標準装備のサイト内検索+チューニングで十分だと思っているので、プラグインレスで実装しました。サイト軽量化にもなるかな?
■Wordpressのサイト内検索には固定ページも含まれるので、必要であれば検索から除外することも出来ます↓