WordPress Ajax фильтр
Делаю фильтр продуктов на WordPress. Зашел в тупик и не смог найти решение. У меня есть фильтр (скриншот прикрепил). 
Я создал кастомный тип записи. И у него есть 3 подрубрики Материал/Стиль/Компановка. И не могу понять как правильно на стороне сервера фильтровать записи. Сейчас если выбрать несколько материалов и стилей. Фильтр выводит все записи у которых есть хотя бы одна из рубрик, а нужно чтоб он выводил только те записи у которых выбраны отмеченные рубрики. Пробовал делать такой запрос
$checkedValues = isset($_GET['checkedValues']) ? sanitize_text_field($_GET['checkedValues']) : '';
$checkedValues = explode(',', $checkedValues);
$min_price = $_GET['min'] ? $_GET['min'] : 0;
$max_price = $_GET['max'] ? $_GET['max'] : 999999;
$args = array(
'posts_per_page' => -1,
'meta_key' => 'card_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post_type' =>'kitchen',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'card_price',
'value' => $min_price,
'type' => 'NUMERIC',
'compare' => '>=',
),
array(
'key' => 'card_price',
'value' => $max_price,
'type' => 'NUMERIC',
'compare' => '<=',
),
),
);
if (!empty($checkedValues) && !empty($checkedValues[0])) {
$args['tax_query'] = array(
array(
'relation' => 'AND',
'taxonomy' => 'material',
'field' => 'term_id',
'terms' => $checkedValues,
),
);
}
$order = $_GET['order'] ?? '';
if ($order === 'A-z') {
$args['order'] = 'ASC';
$args['orderby'] = 'title';
} elseif ($order === 'Z-a') {
$args['order'] = 'DESC';
$args['orderby'] = 'title';
}
И нашел еще вот такой вариант, но что-то мне подсказывает что это вообще бред
if (!empty($checkedValues) && !empty($checkedValues[0])) {
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'material',
'field' => 'term_id',
'terms' => $checkedValues,
),
),
);
if (!empty($checkedValues2) && !empty($checkedValues2[0])) {
$args['tax_query'][] = array(
'taxonomy' => 'material',
'field' => 'term_id',
'terms' => $checkedValues2,
'operator' => 'EXISTS',
);
}
if (!empty($checkedValues3) && !empty($checkedValues3[0])) {
$args['tax_query'][] = array(
'taxonomy' => 'material',
'field' => 'term_id',
'terms' => $checkedValues3,
'operator' => 'EXISTS',
);
}
}
Из фильтра ajax запросом передаются term_id. Буду очень благодарен за какую-либо помощь
Ответы (1 шт):
Тут простой WP_Query только надо прокидывать значения meta_query Вот статья об этом. Не надо городить велосипеды, которые нельзя просто обслуживать.