ケケンタ
WordPressの検索機能の条件に「SEO SIMPLE PACKの設定内容」も含めたいんだけど、どうすればいいの……?
今回はこのようなお悩みをお持ちの方に向けて
WordPressで検索機能の条件に
SEO SIMPLE PACKの設定内容を追加するためのカスタマイズ方法
をご紹介します。
「タグ・カテゴリー・カスタムフィールド」を検索条件に追加したい方はこちらをご覧ください。
【WordPress】検索機能の条件にタグ・カテゴリー・カスタムフィールドを追加する
WordPressの検索機能に条件を追加したいんだけどどうすればいいんだろう…… 今回はこうしたお悩みをお持ちの方へ向けて WordPressの検索機能の条件にタグ・カテゴリー・…
WordPressの検索機能は簡単に実装可能ですが、デフォルトだと、投稿記事と固定ページの「タイトル」と「本文」しか検索対象に含まれていません。
しかし、SQLを利用することで複雑な検索条件を指定することが可能です。
目次
【ソースコード】検索条件に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に関する情報を発信しています。
ご興味のある方はぜひほかの記事もご覧いただけるとうれしいです!
コメント