WordPressのサイト内検索機能で複数のキーワードを入力して検索する場合、デフォルトではAND検索になります。
例えば、「テスト」と「テストneko」という投稿があったとして、「テスト neko」で検索すると”テスト”と”neko”の両方を含む 「テストneko」 のみがヒットします。これがAND検索です。
一方でOR検索は、「テスト neko」で検索すると”テスト”と”neko”のいずれかを含む投稿がヒットするので、「テスト」と「テストneko」の両方が検索結果に表示されます。
サイト内検索の用途としてはAND検索が好ましいケースの方が多いかとは思いますが、サイトによってはAND検索ではなくOR検索をしたいというケースもあると思います。
そこで今回は、WordPressのサイト内検索をOR検索に変更する方法をご紹介したいと思います。
WordPressのサイト内検索をOR検索に変更する方法
サイト内検索をOR検索に変更するには、posts_searchというフィルターフックを利用します。posts_searchは、WP_Queryで使用されるSQLクエリのWHERE句を変更できるフックです。
適用しているテーマのfunctions.phpに以下コードを追加すれば、検索方法がOR検索に変わります。コピペでOKです。
function custom_or_search($search) {
return str_replace(')) AND ((', ')) OR ((', $search);
}
add_filter('posts_search', 'custom_or_search');
検索実行時のWHERE句で”AND”と”OR”を書き換えることで、検索方法をANDからORに変更しています。
あとがき
posts_searchフックを使うことで、簡単にOR検索へ変更可能ですね。
サイト内検索の検索方法を変更したい時は、ぜひ参考にしていただければと思います。