そのままだとカスタムフィールド内も検索対象にならないのでfunction.phpに下記を書き込む
//サイト内検索の設定 function filter_search($query) { if ($query->is_search() && $query->is_main_query() && !is_admin()) { //検索に含めるもの(記事、ページ、カスタム投稿) $post_array = array('post', 'page', 'items'); //検索に含めたくないもの(例えばお問い合わせの確認、完了画面とか) $page_ID_contact_confirm = get_page_by_path('contact/confirm')->ID; $page_ID_contact_completion = get_page_by_path('contact/completion')->ID; $not_in_array = array($page_ID_contact_confirm,$page_ID_contact_completion); $query->set('post_type', $post_array); $query->set('post__not_in', $not_in_array); } } add_filter('pre_get_posts', 'filter_search'); //検索 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 = ''; 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 r.object_id FROM {$wpdb->term_relationships} AS r INNER JOIN {$wpdb->term_taxonomy} AS tt ON r.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id WHERE t.name LIKE '{$search_word}' OR t.slug LIKE '{$search_word}' OR tt.description 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);