На сайте WP Woo есть такая структура категорий товаров:
Шины
- Летние
-- Bridgestone (бренд)
--- Turanza T005 (модель)
- Зимние
-- Бренд
--- Модель
- Всесезонные
-- .....
--- .....
Товары привязаны к самой последней категории (Turanza T005 и т.д.).
Есть необходимость получить массив названий брендов с доп. условием - в любой дочерней категории (она же модель) должна находиться хотя бы одна запись (товар).
На данный момент реализовал получение массива брендов как одного уровня дочерних по отношению к сезонам категорий:
function theme_get_cats_by_parent( $parent_ids = array() ) {
if ( empty( $parent_ids ) ) return '$parent_ids is empty!';
global $wpdb;
$in_holders = implode( ',', array_fill( 0, count( $parent_ids ), '%d' ) );
$term_names = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT t.name
FROM $wpdb->terms t
INNER JOIN $wpdb->term_taxonomy tt
on t.term_id = tt.term_id
WHERE tt.taxonomy = %s
AND tt.parent IN ( $in_holders )
ORDER BY t.name
", [ 'product_cat', ...$parent_ids ] ) );
return $term_names;
}
$brands = theme_get_cats_by_parent( array( 195, 196, 197 ) );
Уважаемые специалисты, подскажите, пожалуйста, как нужно модифицировать запрос, чтобы в результирующем массиве не было пустых категорий?
примечание: использование SQL запроса обусловлено большим количеством категорий - около 4К