クリップが2件もついているので、結論をまとめます。
まず、やはりWP_Queryの標準状態では実現不可能でした。
その上で、基本的な考えとしては、「s」での標準検索が、タグやカテゴリに対しても部分一致で検索しているので、それを有効活用します。
ただし、「本文に対しては検索しなくて良い」「タグだけで良い」「タグとカテゴリだけで良い」といった場合は、不要なものを実行されるSQLから削除します。
具体的には、以下のようなコードをfunctions.phpに追記します。
PHP
1function my_search($search, $wp_query){
2 // var_dump($wp_query);
3 $s = $wp_query->get('s');
4 $s_arr = explode(' ',$s);
5 foreach($s_arr as $search_key){
6 $search = preg_replace("/ OR (wp_posts.post_content LIKE '{[0-9a-z]+}".$search_key."{[0-9a-z]+}')/",'',$search); // 本文に対する検索を削除
7 }
8 return $search;
9}
10add_filter('posts_search','my_search', 10, 2);
var_dumpでクエリの中の"request"(実行されるSQL)を確認しながら作業することになります。
部分一致検索を自分で追加するよりもこの標準検索から不要なものを削るほうが簡単なようです。
ご参考にされてください。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 05:33
2019/04/17 05:35