Получить список основных категорий товаров в WooCommerce

16 янв. 2013 г., 08:16:53
Просмотры: 18.2K
Голосов: 1

Я использую тему WooCommerce для своего сайта. Я пытаюсь вывести список только основных категорий товаров. Я пробовал этот код, но он возвращает все категории - и основные, и подкатегории.

$product_category = wp_get_post_terms( $post->ID, 'product_cat' );

Мне нужно отобразить только список основных категорий товаров. Как это сделать?

0
Все ответы на вопрос 4
0

Проверьте родителя каждой категории, категории верхнего уровня будут иметь значение parent равное 0:

$product_category = wp_get_post_terms( $post->ID, 'product_cat' );

foreach( $product_category as $cat ):
    if( 0 == $cat->parent )
        echo $cat->name;
endforeach;
16 янв. 2013 г. 08:46:24
0

Вы можете легко сделать это, используя шорткоды 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 и использовать свой собственный цикл. Кстати, вышеуказанные шорткоды выводят содержимое этого файла.

13 окт. 2013 г. 23:07:15
1

Пожалуйста, используйте этот код.

У меня он работает..

<?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; ?>
28 февр. 2015 г. 12:42:54
Комментарии

Пожалуйста, не просто скидывайте код, возможно [отредактируйте] и добавьте объяснение, как это может решить проблему.

Mayeenul Islam Mayeenul Islam
28 февр. 2015 г. 12:59:31
0

взято отсюда : http://stackoverflow.com/questions/20777929/woocommerce-how-do-i-get-the-most-top-level-category-of-the-current-product-ca/#answer-20778095

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 ) {
// выполнить действие
}
25 янв. 2023 г. 22:45:01