Обычно это делается через гет-запросы. Например у вас ссылка
/repair/?brand=rus, на хуке
pre_get_posts
проверяете таксономию и гет-переменную и фильтруете записи для вывода
Для корректной работы переменную нужно зарегистрировать, если ее нет
add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'brand';
return $qvars;
}
Добавить в ссылку гет-переменную можно с помощью функции
add_query_arg()
$link = add_query_arg( [ 'brand' => 'rus' ], $cur_link );
Получить гет-запрос можно с помощью
get_query_var()
и отфильтровать по примеру
add_action( 'pre_get_posts', 'filter_pre_get_posts', 1 );
function filter_pre_get_posts( $query ) {
// Выходим, если это админ-панель или не основной запрос
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// Выбираем записи с GET запросами brand
if ( $query->is_tax( 'repair' ) && get_query_var( 'brand', false ) ) {
$tax_query = [];
$tax_query['tax_query'][] = [
'taxonomy' => 'brands',
'field' => 'slug',
'terms' => get_query_var( 'brand', false ),
];
$query->set( 'tax_query', $tax_query );
}
}