###実現したいこと
WordPressのフリーワード検索で、特定のカスタム投稿フィールド(ACFで作成)の値のみ検索対象から除外したいです。
###参考のソース
https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/
上記のURLを参考に
function cf_search_join($join) { global $wpdb; if (is_search()) { $join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id '; } return $join; } add_filter('posts_join', 'cf_search_join'); function cf_search_where($where) { global $wpdb; if (is_search()) { $where = preg_replace( "/(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where); } return $where; } add_filter('posts_where', 'cf_search_where'); function cf_search_distinct($where) { global $wpdb; if (is_search()) { return "DISTINCT"; } return $where; } add_filter('posts_distinct', 'cf_search_distinct');
で試した結果、当然カスタム投稿フィールドの値を検索対象として検索結果に表示はできたのですが、ここから特定のカスタム投稿フィールドの値のみ検索対象外としたいのです。
上記をベースにした場合には、どのような記述をすれば特定のカスタム投稿フィールドを除外できますでしょうか。
お手隙の時にでもご教示いただければと存じます。
何卒よろしくお願いいたします。
###補足情報
http://wpcj.net/1363
上記URLの方法で試した結果、検索対象の除外はうまくいくのですが、あるはずのキーワードで検索しても出てこなかったりするバグが私の環境では発生いたしました。
そのバグには規則・法則性はなく、テキストなど文章の一部までは検索すると表示されるのにそれ以上の文字まで範囲に含めると検索結果として表示されないなどです。
回答1件
あなたの回答
tips
プレビュー