Получите все категории товаров в WooCommerce

Я пытаюсь получить категории товаров в WooCommerce, но функция get_terms() у меня не работает. Я получаю пустой массив.

Что я делаю неправильно? Как получить все термины категории продуктов Woocommerce?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
0
12 082
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Категория продукта — это "пользовательская таксономия" product_cat, используемый продуктами WooCommerce.

Вам нужно использовать get_terms() с правильная таксономия следующим образом:

// Get Woocommerce product categories WP_Term objects
$categories = get_terms( ['taxonomy' => 'product_cat'] );

// Getting a visual raw output
echo '<pre>'; print_r( $categories ); echo '</pre>';

Вы также можете получить пустые категории продуктов, используя get_terms(), например:

$categories = get_terms( ['taxonomy' => 'product_cat', 'hide_empty' => false] );

Протестировано и работает (WordPress 3.5+ и WooCommerce 2.4+)… Оба должны работать на вас.

Вы получите что-то вроде:

Array
(
    [0] => WP_Term Object
        (
            [term_id] => 83
            [name] => Uncategorized
            [slug] => uncategorized
            [term_group] => 0
            [term_taxonomy_id] => 83
            [taxonomy] => product_cat
            [description] => 
            [parent] => 0
            [count] => 5
            [filter] => raw
            [meta_value] => 1
        )

    [2] => WP_Term Object
        (
            [term_id] => 11
            [name] => Tshirts
            [slug] => tshirts
            [term_group] => 0
            [term_taxonomy_id] => 11
            [taxonomy] => product_cat
            [description] => 
            [parent] => 0
            [count] => 13
            [filter] => raw
            [meta_value] => 2
        )
    // … and so on …
)

Не работает. Я получаю этот объект WP_Error ([errors] => Array ([invalid_taxonomy] => Array ([0] => Invalid Taxonomy.)) [error_data] => Array ())

abdul wadood 12.04.2019 13:54

Извините, но этот код протестирован и работает… таксономия для категорий woocommerce — «product_cat»… Так что вы где-то путаетесь.

LoicTheAztec 12.04.2019 13:59

Я выбрал свой из всех категорий товаров, также исключил категории, которые я не хочу отображать

$taxonomy = "product_cat";
$terms = get_terms($taxonomy, array('orderby' => 'slug', 'hide_empty' => false, 'exclude' => array( 19 ))); //Exclude Specific Category by ID

foreach ($terms as $term) {
    $thumbnail_id = get_woocommerce_term_meta($term->term_id, 'thumbnail_id', true);
    $image = wp_get_attachment_url($thumbnail_id); ?>

    <div class = "col-12 col-md-3">
        <div class = "cat-item drop-shadow white-b padding-20 align-center margin-bottom-30">
            <?php 
                echo '<h3 class = "uppercase strong blue-2-c margin-bototm-20 equal-height">' . $term->name . '</h3>';
                echo '<div class = "item-thumbnail" style = "background: url('.$image.');height:150px"></div>'; 
                echo '<a href = "' . get_term_link($term->name, $taxonomy) . '" class = "button color-blue-2-radial">View Range</a>';
            ?>
        </div>
    </div>

Другие вопросы по теме