スポンサーリンク

Advanced Custom Fields (ACF)でカスタムフィールドを検索結果に反映させる

スポンサーリンク

Advanced Custom Fields (ACF)は、
そのままでは検索結果に反映されません。カスタムフィード値を検索結果に反映させる方法です。

functions.phpに以下を記述する。

 

function custom_search($search, $wp_query) {
  global $wpdb;

  if (!$wp_query->is_search)
      return $search;
  if (!isset($wp_query->query_vars))
      return $search;

  $search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : '');
  if ( count($search_words) > 0 ) {
      $search = '';
      $search .= "AND post_type = 'post'";
      foreach ( $search_words as $word ) {
          if ( !empty($word) ) {
              $search_word = '%' . esc_sql( $word ) . '%';
              $search .= " AND (
                 {$wpdb->posts}.post_title LIKE '{$search_word}'
                OR {$wpdb->posts}.post_content LIKE '{$search_word}'
                OR {$wpdb->posts}.ID IN (
                SELECT distinct post_id
                FROM {$wpdb->postmeta}
                WHERE meta_value LIKE '{$search_word}'
                )
              ) ";
            
          }
      }
  }
  return $search;
}
add_filter('posts_search','custom_search', 10, 2);

参考サイト:

WordPressでカスタムフィールドの値をサイト内検索の対象にする方法(プラグインなし)
カスタムフィールドを検索対象にする方法
タイトルとURLをコピーしました