WordPressのサイト内検索で「カスタムフィールド」の値を
検索対象に含める方法を
こちらのページを見つけました。
https://www.webernote.net/wordpress/custom-fields-search.html
このページで、
『上記のコードをfunctions.phpに貼りつけるだけで問題なく動作します。 』と
書かれていましたので記述通りに貼り付けてました。
php
1function custom_search($search, $wp_query) { 2 global $wpdb; 3 4 if (!$wp_query->is_search) 5 return $search; 6 if (!isset($wp_query->query_vars)) 7 return $search; 8 9 $search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : ''); 10 if ( count($search_words) > 0 ) { 11 $search = ''; 12 $search .= "AND post_type = 'post'"; 13 foreach ( $search_words as $word ) { 14 if ( !empty($word) ) { 15 $search_word = '%' . esc_sql( $word ) . '%'; 16 $search .= " AND ( 17 {$wpdb->posts}.post_title LIKE '{$search_word}' 18 OR {$wpdb->posts}.post_content LIKE '{$search_word}' 19 OR {$wpdb->posts}.ID IN ( 20 SELECT distinct post_id 21 FROM {$wpdb->postmeta} 22 WHERE meta_value LIKE '{$search_word}' 23 ) 24 ) "; 25 26 } 27 } 28 } 29 return $search; 30} 31add_filter('posts_search','custom_search', 10, 2);
ただ、検索フォームについては書かれていませんでしたので
他のサイトから
こちらのhtmlをトップページに貼り付けました。
html
1<form method="get" id="searchform" action="<?php bloginfo('url'); ?>"> 2 <label for="s" class="assistive-text">検索</label> 3 <input type="text" name="s" id="s" placeholder="検索" /> 4 <input type="submit" value="検索" /> 5</form>
「検索」ボタンを押すと
「お探しのページは見つかりません」というエラーが出てしまいます。
基本的なことを理解していないのが原因だと思いますが
お知恵を拝借できましたらと。
なお検索したいカスタムフィールドのデータ型は
テキストエリアとチェックボックスが複数あり
それらに入っているデータを検索したいです。
あなたの回答
tips
プレビュー