WooCommerce: автоматическая установка родительской категории при массовом изменении товаров

|

В чем заключается проблема с массовым изменением категорий товаров в WooCommerce?

При массовом изменении категорий товаров через админку WooCommerce или импорт CSV часто возникает ситуация, когда дочерние категории присваиваются товарам без автоматического добавления их родительских категорий. Это приводит к некорректному отображению товаров в фильтрах и навигации, а также ухудшает SEO.

Диагностика проблемы

Чтобы проверить, возникает ли проблема с присвоением родительских категорий, сделайте следующее:

Пошаговое решение: автоматическое добавление родительских категорий

Решение — программно добавлять родительские категории при сохранении или массовом обновлении товара. Для этого используем хук save_post_product, который срабатывает при сохранении товара, и дополняем категории.

Пример кода, который добавляет родительские категории к товару при сохранении:

add_action('save_post_product', 'add_parent_categories_to_product', 20, 3); 
function add_parent_categories_to_product($post_id, $post, $update) {
    // Проверяем тип поста
    if ($post->post_type !== 'product') {
        return;
    }

    // Получаем все категории товара
    $terms = wp_get_post_terms($post_id, 'product_cat');
    if (is_wp_error($terms) || empty($terms)) {
        return;
    }

    $all_cats = [];
    foreach ($terms as $term) {
        $all_cats[] = $term->term_id;
        // Получаем всех родителей категории
        $parent_id = $term->parent;
        while ($parent_id) {
            $all_cats[] = $parent_id;
            $parent_term = get_term($parent_id, 'product_cat');
            if (is_wp_error($parent_term) || !$parent_term) {
                break;
            }
            $parent_id = $parent_term->parent;
        }
    }

    $all_cats = array_unique($all_cats);

    // Обновляем категории товара
    wp_set_post_terms($post_id, $all_cats, 'product_cat');
}

Этот код гарантирует, что при сохранении товара будут автоматически добавлены все родительские категории выбранных дочерних.

Автоматизация для массового редактирования

При массовом редактировании через админку WooCommerce хук save_post_product также срабатывает, поэтому данный код применится и к массовым изменениям.

Если вы импортируете товары из CSV, рекомендуется запускать аналогичный скрипт после импорта, чтобы дополнить категории родительскими.

Как проверить, что решение работает

Частые ошибки и причины

Практические советы для производительности и безопасности

Сравнение вариантов решения

МетодПреимуществаНедостатки
Код на хуке save_post_productАвтоматически работает при сохранении и массовом редактировании, не требует плагинов.Не срабатывает при прямом импорте, возможны проблемы с производительностью на больших сайтах.
Плагин для массового обновления категорийГотовое решение, может иметь дополнительные функции (логирование, отчёты).Зависимость от стороннего кода, возможно платное, может замедлять сайт.
Ручной запуск WP CLI скрипта после импортаВысокая производительность, полный контроль над процессом.Требует навыков работы с командной строкой, не автоматизировано.
Автоматическое создание иерархии контекста в WordPress с помощью хуков
26.03.2026
Как создать иерархию комментариев в WordPress с пользовательской логикой
18.01.2026
Как настроить виртуальные иерархии в WordPress для определённых типов постов
08.01.2026
WooCommerce: решение проблемы с отображением иерархии категорий при фильтрации
27.04.2026
WooCommerce: автоматическое установление атрибутов при массовом импорте товаров
16.07.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее