wordpressのサイト内検索の対象から、特定のACFフィールドを除外したい

実現したいこと

wordpressで、サイト内検索にカスタムフィールドを含めるようにしているが、そこから特定のACFフィールドを除外したい。

前提

wordpressで以下のサイトを参考に、サイト内検索にカスタムフィールドを含めるように設定しています。
https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/

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 $pagenow, $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 ); //除外したいフィールドの指定 $where .= " AND (" .$wpdb->postmeta. ".meta_key NOT LIKE 'jogai_field')" } 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' );

試したこと

特定のACFフィールド(jogai_field)を、検索対象から外したく、cf_search_where関数に除外したいfieldの指定を追加しているのですが、うまくいきません。

どなたかご教示いただけましたら、大変助かります。。

補足情報(FW/ツールのバージョンなど)

wordpressのバージョンは6.1.1です。

コメントを投稿

0 コメント