情報を繋げる扉 ウェブトビラ

*

WordPressプラグイン「Search Everything」を使ってキーワード検索をカスタマイズ

      2018/04/23

WordPressのキーワード検索機能について

WordPressのデフォルトのキーワード検索機能は、投稿記事のタイトルと本文を対象として検索しているようです。ちなみにキーワードはスペースで区切ると複数検索が出来ます。
(例:「カフェ ドーナツ」→「カフェ+ドーナツ」で複数検索)

キーワード検索した際にURLに付いてくるパラメータをみれば分かりやすいと思います。

http://hogehoge.com/?s=カフェ+ドーナツ

複数キーワード検索で気を付けておきたい点としては、プラグインの「WP Multibyte Patch」が有効化していないと全角スペースを使った場合キーワードを区切ってくれません。全角スペースを含めた一つのキーワードとして検索します。
(例:「カフェ ドーナツ」で一つのキーワードとして検索してしまう)

あとデフォルトの検索機能はAND検索であるという点も抑えておきたいところです。「カフェ+ドーナツ」で検索した場合、ヒットさせるには「カフェ」と「ドーナツ」どちらのキーワードもタイトルか本文に含む必要があります。

まずはカスタムフィールドも検索範囲に含めたい

さて、WordPressがタイトルと本文を検索してくれるのは分かりますが、カスタムフィールドは???残念ながらデフォルトでは検索範囲に含んでおりません。

functions.phpにコードを加えてカスタムフィールドを検索範囲に含める方法がありましたが、とある案件でREST APIを使うとうまく機能せず、いろいろと試したところ「Search Everything」を使うと簡単にカスタムフィールドを検索範囲に含めることが出来ました。

プラグインをインストールして有効化にし、設定画面から「すべてのカスタムフィールドを検索」にチェックをして保存するだけですので簡単です。しかしWordPressはデフォルトではAND検索です。このプラグインにANDとORの切り替え機能まで入っていれば万々歳でしたが、そこまで世の中あまくありませんでした。

他の手段も模索しましたが、REST APIを使った検索でカスタムフィールド含めてといった情報が乏しく「Search Everything」をカスタマイズすることを決意しました。

「Search Everything」のAND検索をOR検索に

こちらのブログで「Search Everything」のカスタマイズが掲載されてましたので参考にさせていただきました。

プラグインのディレクトリの中にあるarchive-recipe.phpを変更します。

se_build_search_metadata関数の中にある「$searchand = ‘ AND ‘;」を「$searchand = ‘ OR ‘;」に変更でOK。

こうしてみると、あらかじめ変更しやすいようにコードを書いてくれているようです。

しかし、これだけではまだ完璧ではありませんでした。カスタムフィールドはOR検索になってるのですが、タイトルと本文に関してはAND検索で行っているようです。

コードを眺めてたらse_search_defaultという関数を見つけました。見るからに初期設定に関わってきそうなコードです。

「$seperator = ‘ AND ‘;」を「$seperator = ‘ OR ‘;」に変更して試したところ見事にタイトルと本文もOR検索になりました。

これでようやくREST APTで複数キーワードを使ってタイトルと本文とカスタムフィールドからOR検索することが出来ました。

 - Web制作, WordPress

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

利用頻度の高いWordPressのプラグイン紹介

私が普段仕事でWordPressのサイト構築をするにあたって良く使うプラグインを …

レスポンシブウェブデザインで印刷(プリント)に対応させるCSSの読み込み指定

レスポンシブ対応でサイト制作をしてる際、お客様からプリントしてもレイアウト崩れて …

ルート直下にディレクトリを設置してインストールしたWordPressのURLをルートに設定する方法

サーバーのルート(サーバーによりwwwであったりpubalic_htmlなど)デ …

WordPressで条件分岐で使ってメタ情報とタイトルをページごとに出し分ける

WordPressでSEOを考慮して各ページごとにタイトルやメタ情報を条件分岐で …

WordPress基本テンプレート覚書

しょっちゅういじってれば忘れる事ないと思うけど、覚えているつもりでも、間があくと …

SublimeTextでPackage Controllでエラーが出たので対処した

新たに機能を追加しようと思い、Package Contoroll(windows …

WordPress 4.5系で出たboxer jQuery のエラーを修正

組み込んだjQueryのboxerの動作がどうしてもうまくいかない。。。 ローカ …

no image
ベーシック認証をかけてスマホの動作確認してたら更新毎にパスワードを求められたのを処理した件

レスポンシブで制作しているときにちょっと困ったことがありまして、テストサイトでス …

技術職のコストが高い理由?

お客様に見積もりを提案してこちらは一般的な料金で提案したにもかかわらず、高いと思 …

no image
npmでのインストールが404エラーになってたが原因はregistryの設定ファイルだった

node-sassを使おうと思ってnode.jsをインストールし、npmを使って …