您可以尝试取消设置原始搜索查询,否则您可能会加倍,而组合结果将一无所获?例如,尝试向函数中添加:
$query->set(\'s\',\'\');
UPDATE
我不确定,但你可以试试
AND
运算符-我认为这将添加到现有查询中,而不是替换它。。。
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 );
注:更改了字段的使用
name
正如@PieterGoosen提到的
slug
, 和预取的术语slug传递给tax查询,以及@birgire提到的额外条件。