Как отфильтровать посты сразу по двум рейтингам?
Есть вот такие два фильтра. Первый забирает посты по массиву с их id второй по таксономии. Код выглядит так.
function all_reviews_filter_ajax()
{
$arr_selected_supplements = $_POST['arr_selected_supplements'] ?? array();
$arr_reviews_with_rating = $_POST['arr_reviews_with_rating'] ?? array();
$posts_per_page = intval($_POST['posts_per_page']);
$page = intval($_POST['page']);
if (empty($arr_selected_supplements) && empty($arr_reviews_with_rating)) {
$args = array(
'post_status' => 'publish',
'post_type' => 'reviews',
'posts_per_page' => $posts_per_page,
'paged' => $page,
);
} else {
$args = array(
'post_status' => 'publish',
'post_type' => 'reviews',
'posts_per_page' => -1,
);
if (is_array($arr_reviews_with_rating)) {
global $r_5, $r_4, $r_3, $r_2;
// Create a mapping array to associate values like "r_5" with the corresponding post IDs
if (is_array($r_5) && is_array($r_4) && is_array($r_3) && is_array($r_2)) {
$rating_mapping = array(
'r_5' => array_keys($r_5),
'r_4' => array_keys($r_4),
'r_3' => array_keys($r_3),
'r_2' => array_keys($r_2),
);
// Get post IDs based on selected values in $arr_reviews_with_rating
$selected_ratings = array();
foreach ($arr_reviews_with_rating as $value) {
if (isset($rating_mapping[$value])) {
$selected_ratings = array_merge($selected_ratings, $rating_mapping[$value]);
}
}
if (!empty($selected_ratings)) {
// This will filter posts that have matching ratings
$args['post__in'] = $selected_ratings;
error_log("Arr ids =" . print_r($selected_ratings, true));
}
} else {
echo "not arrays";
}
}
if (is_array($arr_selected_supplements)) {
$arr_selected_supplements = array_map('intval', $arr_selected_supplements);
$args['tax_query'] = array(
'relation' => 'AND',
array(
'taxonomy' => 'supplement_type',
'field' => 'id',
'terms' => $arr_selected_supplements,
'operator' => 'AND',
),
);
}
}
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
get_template_part('template-parts/review-item');
}
} else {
echo "No results found.";
}
wp_die();
}
add_action('wp_ajax_all_reviews_filter', 'all_reviews_filter_ajax');
add_action('wp_ajax_nopriv_all_reviews_filter', 'all_reviews_filter_ajax');
По отдельности, они работают правильно. Но когда выбираються значения и с первого и со второго то посты не возвращаються. (Отрабатывает AND) Мне необходимо, чтобы, если они соответствуют хотя бы одному из условий (или обоим) выводился список из ВСЕХ постов.(без повторов) В документации есть про параметр 'relation' => 'OR' для таксономий... но как быть в этом случаии. Подскажите, пожалуйста ?

*атрибуты 'relation' => 'AND', и 'operator' => 'AND', пробовал уже от отчаянья добавлять... понимаю что они там лишнее