KH-WEBLOG TOP > WEBメモ > WordPress > カスタムフィールドの値をプラグイン無しで検索対象に含める方法:WordPress

カスタムフィールドの値をプラグイン無しで検索対象に含める方法:WordPress

最終更新日:

WordPressの検索でカスタムフィールドを検索対象にする方法をご紹介します。

プラグインの「Search Everything」でも同じことができますが、
今回はプラグイン無しの方法です。

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 = '';
$search .= "AND post_type = 'post'";
foreach ( $search_words as $word ) {
if ( !empty($word) ) {
$search_word = '%' . esc_sql( $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 post_id
FROM {$wpdb->postmeta}
WHERE meta_value LIKE '{$search_word}'
)
) ";
}
}
}
return $search;
}
add_filter('posts_search','custom_search', 10, 2);

でOK

検索対象に含むカスタムフィールドを指定する場合

上記の方法だと全カスタムフィールドが検索対象に含まれますので、
特定のカスタムフィールドのみにしたい場合は

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 = '';
$search .= "AND post_type = 'post'";
foreach ( $search_words as $word ) {
if ( !empty($word) ) {
$search_word = '%' . esc_sql( $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 post_id
FROM {$wpdb->postmeta}
WHERE {$wpdb->postmeta}.meta_key IN ('カスタムフィールド名', 'カスタムフィールド名') AND meta_value LIKE '{$search_word}'
)
) ";
}
}
}
return $search;
}
add_filter('posts_search','custom_search', 10, 2);

のようにします。

カスタムフィールド名の箇所に指定したいカスタムフィールド名を記載すればOK

コーディング・WordPress化作業を代行します

WordPressのおすすめ参考書

楽天Kobo電子書籍ストア
¥3,278 (2024/06/12 18:43時点 | 楽天市場調べ)

TAGS

.htaccess ActionScript All in one seo pack Contact Form 7 CSS CSS3 EC-CUBE Flash HTML HTML5 JavaScript jQuery LightBox PHP RSS SEO WordPress アイキャッチ画像 アクセス解析 カスタムフィールド カテゴリー カラーミーショップ カート コメント ショートコード テンプレートタグ ドロップダウンメニュー パーマリンク フォーム フルスクリーン ブログカード プラグイン ページテンプレート ページナビ ページ分割 マウスイベント リダイレクト リンク リンクカード レンタルサーバー ロールオーバー 携帯サイト 条件分岐 正規表現 関連記事