Имеется простенький самописный
WordPress-плагин Интернет-магазина.
Создана кастомная таксономия WordPress. Реализована
фильтрация товаров:
Характеристики по которым идет фильтрация записаны для товаров в мета-поля.
Соотв. получаем нужные товары в зависимости от выбранных фильтров так:
$args = array(
'post_type' => 'product',
'posts_per_page' => $data['page_count'] ? $data['page_count'] : 16,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'cats',
'field' => 'term_id',
'terms' => $_cat_id,
)
)
);
if (count($data['filters'])) {
$args['meta_query'] = array(
'relation' => 'OR',
);
foreach ($data['filters'] as $_filter => $_values) {
$args['meta_query'][] = array(
'key' => $_filter,
'value' => (array) $_values,
);
}
}
$wp_query = new WP_Query( $args );
однако пока не приходит в голову как реализовать взимозависимую работу фильтров так, что если к примеру пользователь выбрал в фильтре: "Страна" определенное значение, то значения в остальных зависимых фильтрах изменились бы?
Вот например, выбрал пользователь в качестве страны - Беларусь, соотв. в фильтре: "Материал корпуса" должны остаться значения только для товаров из Беларуси, ну и соотв. т.д.
Пока в голову приходит
только такой алгоритм:
- берем список всех полученных в результате запроса товаров (а вернее их ID-шники)
- выбираем все значения для каждого товара по каждой характеристике из таблицы: postmeta
но может есть более быстрое (оптимизированное) решение?