[WordPress]OR検索に切り替える方法と、できない場合の原因を調べてみた

シェアする

WordPressのOR検索に切り替える方法と、できない場合の対策

はじめに

WordPressの検索は本来AND検索になっている。

でも、案件によってOR検索にしたいなと思ってやり方を調べてみた。

posts_searchフィルタを使用する

ただ、あんまり情報がない。WordPress本体にあるquery.php(wp-includes内にあるやつ)を弄るって書いてあるやつが結構あるけど、アップデートされたら元に戻っちゃう。

そこで参考にしたのが下記記事。

[WordPress] 検索を OR 検索 にする | unlinked log

[php]add_filter(‘posts_search’, function($search) { return str_replace(‘)) AND ((‘, ‘)) OR ((‘, $search); });[/php]

このソースコードをfunctions.php内に入れればOK。

posts_searchフィルタを使っても変更できない場合がある。

よし!これでイケルはず!と思ったけど、動かなかった。

意味わかんね。って思って再度調べたらフォーラムにも同じような記事があった。

フォーラムの記事を読む限り上手くいってない人もいるようだけど、対応策は書いてなかった。

原因はプラグイン

先ほどのフォーラム記事はわからないけど、僕の案件で変更されなかったのはプラグインが原因だった。

WordPressの検索範囲は「タイトル」や「本文」など限定されている。なので、カスタムフィールドは対応されていない。
そこで「Search Everything」プラグインを使うと検索範囲を拡張できる。

ここが落とし穴だった。「Search Everything」プラグインはWordPressがどうであれ、プラグイン内で強制的にAND検索に切り替えていた。つまりWordPressのテーマ内でOR検索に切り替えた物を再度AND検索に切り替えていた。

恐らく先ほどのフォーラム記事の方もWordPressのバージョンではなくプラグインが原因なんではないかと思っている。その場合は、プラグインによって対応が違うと思うので、都度頑張る感じになる。。

さいごに

プラグインは確かに便利だけど、中のソースコードを理解していないと結構痛い目にあうなって事が多発している。

その為にも自分の技術力を磨かないと。

お問い合わせはこちら