Я пытаюсь добавить форму фильтра таксономии на страницу, используя метод $ _GET, чтобы перенести выбранные термины таксономии в tax_query
.Если выбрано больше терминов, то должны возвращаться только сообщения, содержащие эти точные термины.Вместо этого я получаю все сообщения, которые имеют хотя бы 1 из выбранных терминов.
Это один массив, поэтому 'relation' => 'AND'
здесь не будет работать.Поэтому вместо этого я попытался установить для параметра 'operator'
значение 'AND'
, но это не дает мне никаких результатов после выбора любого из терминов.Я даже пытался вставить цикл foreach
внутри запроса, чтобы создать новый массив tax_query
для каждого члена, надеясь получить параметр relation
для выполнения этой работы.Но это не сработало и на самом деле выглядело как плохая идея.
Это моя текущая настройка запроса:
get_template_part('partials/blog', 'filter');
$paged = get_query_var( 'paged', 1 );
$blog_args = array(
'orderby' => 'date',
'paged' => $paged,
'posts_per_page' => 2
);
if(isset( $_GET['category'] ) ) {
$blog_args['tax_query'] = array(
'relation' => 'AND',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $_GET['category'],
'operator' => 'AND'
),
);
}
$blog_query = new WP_Query($blog_args);
Если пользователь выбирает категорию, это значение передается на 'terms'
в виде массива.
Я ожидал, что параметр 'operator'
будет действовать как параметр 'relation'
, но это не тот случай, или я что-то не так делаю?