この記事にはプロモーションが含まれています。

【WordPress】検索機能の条件にSEO SIMPLE PACKの設定内容を追加する

【WordPress】検索機能の条件にSEO SIMPLE PACKの設定内容を追加する

ケケンタ

WordPressの検索機能の条件に「SEO SIMPLE PACKの設定内容」も含めたいんだけど、どうすればいいの……?

今回はこのようなお悩みをお持ちの方に向けて

WordPressで検索機能の条件に
SEO SIMPLE PACKの設定内容を追加するためのカスタマイズ方法

をご紹介します。

「タグ・カテゴリー・カスタムフィールド」を検索条件に追加したい方はこちらをご覧ください。

WordPressの検索機能は簡単に実装可能ですが、デフォルトだと、投稿記事と固定ページの「タイトル」と「本文」しか検索対象に含まれていません。

しかし、SQLを利用することで複雑な検索条件を指定することが可能です。

目次

kindle日替わりセールバナー

————

WordPressのスキルを伸ばしたい方おすすめの書籍



【ソースコード】検索条件にSEO SIMPLE PACKの設定内容を追加する

以下のソースコードをfunctions.phpに追加するだけで、検索条件にSEO SIMPLE PACKの設定内容を含めることが可能です。

/**
 * サイト内検索のカスタマイズ
 */
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->prepare("%{$word}%");
				$search .= " AND (
					-- 投稿タイトル
					{$wpdb->posts}.post_title LIKE '{$search_word}'
					-- 投稿コンテンツ
					OR {$wpdb->posts}.post_content LIKE '{$search_word}'
					-- 「タグ・カテゴリー」のSEO SIMPLE PACK設定情報
					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
						INNER JOIN {$wpdb->termmeta} AS tm ON t.term_id = tm.term_id
						WHERE tm.meta_value LIKE '{$search_word}' 
							-- タイトル
							AND ( tm.meta_key = 'ssp_meta_title'
								-- ディスクリプション 
								OR tm.meta_key = 'ssp_meta_description' )
					)

					-- 「固定・投稿ページ」のSEO SIMPLE PACK設定情報
					OR {$wpdb->posts}.ID IN (
						SELECT distinct pm.post_id
						FROM {$wpdb->postmeta} AS pm
						INNER JOIN {$wpdb->posts} AS p ON pm.post_id = p.id
						WHERE pm.meta_value LIKE '{$search_word}' 
							-- タイトル
							AND ( pm.meta_key = 'ssp_meta_title'
								-- ディスクリプション
								OR pm.meta_key = 'ssp_meta_description'
								-- キーワード
								OR pm.meta_key = 'ssp_meta_keyword' )
					)
				) ";
			}
		}
	}
	return $search;
}
add_filter('posts_search','custom_search', 10, 2);

このソースコードでは、下記2つを検索条件に追加しています。

  • 「カテゴリー・タグ」で設定しているSEO SIMPLE PACKの情報(タイトル・ディスクリプション)
  • 「固定・投稿ページ」で設定しているSEO SIMPLE PACKの情報(タイトル・ディスクリプション・キーワード)

もしもいずれかの設定情報は検索条件に含めたくないという場合は、それぞれに関連するハイライト行を削除してお使いください。

まとめ

以上がWordPressで検索機能の条件にSEO SIMPLE PACKの設定内容を追加する方法でした。

SQLを利用しているため、もしかしたらハードルを感じる方もいらっしゃるかもしれませんが、上記のソースコードを丸っとfunctions.phpに追加していただくだけでOKなので、まずは一度お試ししてみてはいかがでしょうか。

ケケンタ

この記事が少しでもお役に立ったなら何よりです!

このブログではWordPressやWeb制作、PHPに関する情報を発信しています。

ご興味のある方はぜひほかの記事もご覧いただけるとうれしいです!

検索機能の関連記事

WordPressで検索機能の条件にSEO SIMPLE PACKの設定内容を追加する方法のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次