【WordPress】サイト内検索でカテゴリーとタグも検索で引っかかるようにする方法
今回は、WordPressのサイト内検索でカテゴリーとタグも検索で引っかかるようにする方法について紹介します。
【WordPress】サイト内検索でカテゴリーとタグも検索で引っかかるようにする方法
WordPressのサイト内検索は、デフォルトではタイトルや本文しか検索対象になりません。
カテゴリーとタグでも検索できるようにするには、結論以下のコードを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 = ''; foreach ( $search_words as $word ) { if ( !empty($word) ) { $search_word = $wpdb->escape("%{$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 p.post_id FROM {$wpdb->postmeta} AS p WHERE p.meta_value LIKE '{$search_word}' ) ) "; } } } return $search; } add_filter('posts_search','custom_search', 10, 2);