晴歩雨描

晴れた日は外に出て歩き、雨の日は部屋で絵を描く

WordPress)検索対象に「カテゴリ」を追加し「本文」は含めない。

WordPressのサイト内検索対象に「カテゴリ」を追加し「本文」は含めないようにする。

検索対象は「タイトル」と「カテゴリ」にする。

以下を参考に少しカスタマイズした。

\wp-content\themes\iconic-one\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}.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}'
					)
				) ";
			}
		}
	}
	return $search;
}
add_filter('posts_search','custom_search', 10, 2);