【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);

 

DOWNLOAD

ブログ用WordPressテーマを無料配布中

実務で使える構成・設計をベースにしたテーマです。
すぐにブログ運用を始めたい方はこちらからダウンロードできます。

テーマをダウンロードする

Webサイトの集客や導線設計でお悩みではありませんか?

当社では、データ分析(GA4・検索データ)をもとに、
成果につながるWeb制作・改善をご提案しています。

課題の整理からでも大丈夫ですので、まずはお気軽にご相談ください。

無料で相談する
Author:
Yujiro

Profile:

大阪のWEB制作会社で働くコーダー。コーディングにハマり、気づいたらWEB制作を仕事にしていました。現在は新規のWEBサイト制作やWordPressカスタマイズしたり、当技術ブログを運営しています。

この著者の記事を見る