Это можно сделать только с помощью специального запроса SQL с использованием класса WordPress WPDB
.
Теперь, когда для WooCommerce доступно несколько плагинов брендов продуктов, в зависимости от плагина, который вы используете, вам нужно будет настроить правильную таксономию:
product_brand
для брендов WooCommerce плагин ( здесь по умолчанию в функции ниже) yith_product_brand
для YITH WooCommerce Brands плагин pa_brand
для настраиваемого атрибута продукта (самодельный)
Ниже вы найдете настраиваемую функцию, которая возвращает массив объектов категорий продуктов WooCommerce на основе термина бренда продукта slug :
// The defined taxonomy here in the function $taxonomy argument is for WooCommerce Product brand plugin
function get_product_categories_from_a_product_brand( $brand_term_slug, $taxonomy = 'product_brand' ) {
global $wpdb;
return $wpdb->get_results( "
SELECT t1.*
FROM {$wpdb->prefix}terms t1
INNER JOIN {$wpdb->prefix}term_taxonomy tt1
ON t1.term_id = tt1.term_id
INNER JOIN {$wpdb->prefix}term_relationships tr1
ON tt1.term_taxonomy_id = tr1.term_taxonomy_id
INNER JOIN {$wpdb->prefix}term_relationships tr2
ON tr1.object_id = tr2.object_id
INNER JOIN {$wpdb->prefix}term_taxonomy tt2
ON tr2.term_taxonomy_id = tt2.term_taxonomy_id
INNER JOIN {$wpdb->prefix}terms t2
ON tt2.term_id = t2.term_id
WHERE tt1.taxonomy = 'product_cat'
AND tt2.taxonomy = '$taxonomy'
AND t2.slug = '$brand_term_slug'
" );
}
Код входит в functions. php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.
Пример использования кода в любом php файле - Показать все связанные названия категорий продуктов для ярлыка бренда продукта:
$brand_term_slug = 'levis'; // A term slug is required (not the term id or term name)
$results = get_product_categories_from_a_product_brand( $brand_term_slug );
if( ! empty($results) ) {
$term_names = []; // Initializing an empty array variable
// Loop through each product category terms:
foreach ( $results as $result ) {
$term_id = $result->term_id; // Term id
$term_name = $result->slug; // Term slug
$term_slug = $result->name; // Term name
$taxonomy = 'product_cat';
$term_link = get_term_link( get_term( $result->term_id, $taxonomy ), $taxonomy );
// Example: Set the linked formatted term name in an array
$term_names[] = '<a class="'.$result->slug.'" href="'.$term_link.'">'.$result->name.'</a>';
}
// Display the linked formatted terms names
echo '<div class="brand-categories '.$brand_term_slug.'">'.implode(' ', $term_names).'</div>';
}