だから私は "車"と呼ばれるカスタム分類法があります。ユーザーが検索するときは、分類法でも検索するようにします。 「アウディ」という用語とキーワード「アウディ」によるユーザ検索がある場合、「自動車」という分類法では、「アウディ」という用語でタグ付けされた投稿を返すことになります。
私はこれを試しました:
function mytheme_pre_get_posts( $query ) {
$query->set( 'tax_query', array(
array(
'taxonomy' => 'cars',
'field' => 'name',
'terms' => $_GET['s'],
)
));
add_action( 'pre_get_posts', 'mytheme_pre_get_posts', 1 );
しかしそれは検索を完全に破ります。これは可能ですか私は何かを逃しましたか?
元の検索クエリを設定解除することを試みることができます、そうでなければあなたは2倍になり、組み合わせは何も結果にならないかもしれません?例えば、あなたの関数に追加してみてください。
$query->set('s','');
_アップデート_
よくわからないが、AND
演算子-I think を試すと、既存のクエリに置き換えるのではなく追加される。
function mytheme_pre_get_posts( $query ) {
if ( !is_admin() && $query->is_search() && $query->is_main_query() ) {
$term = get_term_by('name', get_query_var('s'), 'cars');
if ($term) {
$query->set( 'tax_query', array(
array(
'taxonomy' => 'cars',
'field' => 'slug',
'terms' => $term->slug,
'operator' => 'AND'
)
));
}
}
}
add_action( 'pre_get_posts', 'mytheme_pre_get_posts', 1 );
注:@PieterGoosenで説明されているフィールドname
の使用法をslug
に変更し、prefetchしたterm slugをtax queryに渡すように変更しました。