Получить список основных категорий товаров в WooCommerce
Я использую тему WooCommerce для своего сайта. Я пытаюсь вывести список только основных категорий товаров. Я пробовал этот код, но он возвращает все категории - и основные, и подкатегории.
$product_category = wp_get_post_terms( $post->ID, 'product_cat' );
Мне нужно отобразить только список основных категорий товаров. Как это сделать?

Вы можете легко сделать это, используя шорткоды WooCommerce
echo do_shortcode('[product_categories number="12" columns="4"]');
Если вы хотите, чтобы шорткод отображал все категории, используйте:
echo do_shortcode('[product_categories number="12" columns="4" parent="0"]');
Думаю, я объяснил достаточно понятно для вашего понимания.
Вы также можете посмотреть, как это реализовано в файле content_product-cat.php и использовать свой собственный цикл. Кстати, вышеуказанные шорткоды выводят содержимое этого файла.

Пожалуйста, используйте этот код.
У меня он работает..
<?php
$term = get_queried_object()->term_id;
$termid = get_term($term, 'product_cat' );
$args = array(
'orderby' => 'name', // сортировка по названию
'order' => 'ASC', // порядок сортировки (по возрастанию)
'hide_empty' => false, // показывать пустые категории
'child_of' => $term, // дочерние элементы текущей категории
'parent' =>0 // только родительские категории
);
$subproducts = get_terms( 'product_cat', $args);
foreach ($subproducts as $subproduct) {
echo $subproduct->name; ?>

function get_root_term() {
global $post;
$prod_terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($prod_terms as $prod_term) {
// получаем ID категории товара
$product_cat_id = $prod_term->term_id;
// получаем массив всех родительских категорий
$product_parent_categories_all_hierachy = get_ancestors( $product_cat_id, 'product_cat' );
// Вырезаем последний элемент массива (самую верхнюю категорию)
$last_parent_cat = array_slice($product_parent_categories_all_hierachy, -1, 1, true);
foreach( $last_parent_cat as $last_parent_cat_value ) {
$root_term = $last_parent_cat_value;
}
}
return $root_term;
}
// использование
$root_term = get_root_term();
if ( $root_term === 27 ) {
// выполнить действие
}
