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

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

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

ケケンタ

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

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

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

をご紹介します。

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

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

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




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

【ソースコード】検索条件に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


目次