タームのみによる検索について
-
はじめてフォーラムを利用させていただきます。
カスタム投稿タイプ(estate)で作成した記事を検索対象とし、「文字列+ターム」or「文字列のみ」or「タームのみ」で検索結果を絞り込めるようにしたいと考え、以下のコードをfunctions.phpに記述しました。
function search_only_post( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ($query->is_search()) {
$query->set( ‘post_type’, ‘estate’ );
$query->set( ‘posts_per_page’, 5);
$query->set( ‘tax_query’,array(
‘relation’ => ‘OR’,
array(
‘taxonomy’ => ‘websites_tag’,
‘terms’ =>$_GET[“tag”],
‘field’ => ‘slug’,
‘operator’=> ‘AND’,
)
)
);
}
}
add_action( ‘pre_get_posts’, ‘search_only_post’ );function custom_search($search, $wp_query ) {
if ( isset($wp_query->query[‘s’]) ) $wp_query->is_search = true;
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);function custom_request($query)
{
if (!(is_admin()))
{
if(!empty($query[‘tag’]) && array_key_exists(‘s’, $query)){
$query[‘tag’] = implode(‘,’, $query[‘tag’]);
}
}
return $query;
}
add_filter( ‘request’, ‘custom_request’ );その結果、「文字列のみ」と「文字列+ターム」による検索は成功しました。しかしながら「タームのみ」の検索だけ、function search_only_postの中の$query->is_search()の条件を満たしていないらしく、デフォルトの投稿で作成した記事を検索対象とし、結果を出力してしまいます。
「タームのみ」の検索でも検索対象をカスタム投稿タイプ(estate)で作成した記事にすることは可能でしょうか。アドバイス等いただけましたら、幸いです。
- トピック「タームのみによる検索について」には新たに返信することはできません。