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

|

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

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

Основные признаки проблемы:

Проверить текущие категории товара можно через стандартный REST API WooCommerce или напрямую в базе данных в таблице wp_term_relationships и wp_term_taxonomy.

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

1. Анализ структуры CSV и подготовка данных

Убедитесь, что в CSV-файле для импорта категорий товары содержат полное иерархическое имя категории, например, Одежда > Мужская > Футболки. Если иерархия задана плоско, нужно преобразовать CSV или обработать категории программно.

2. Создание функции для автоматического добавления родительских категорий

Используем хук woocommerce_product_import_inserted_product, который срабатывает после создания товара при импорте. В функции добавим родительские категории, если они отсутствуют.

add_action('woocommerce_product_import_inserted_product', 'add_parent_categories_after_import', 10, 2);
function add_parent_categories_after_import($product, $data) {
    if (empty($data['categories']) || !is_array($data['categories'])) {
        return;
    }

    $all_terms = [];

    foreach ($data['categories'] as $category_name) {
        // Разбиваем иерархию по > для получения всех уровней
        $levels = array_map('trim', explode('>', $category_name));

        // Проходим по уровням сверху вниз
        $parent_id = 0;
        foreach ($levels as $level) {
            $term = term_exists($level, 'product_cat', $parent_id);
            if (!$term) {
                $term = wp_insert_term($level, 'product_cat', ['parent' => $parent_id]);
            }
            if (!is_wp_error($term)) {
                $parent_id = is_array($term) ? $term['term_id'] : $term;
                $all_terms[$parent_id] = true;
            } else {
                break; // Ошибка при создании терма
            }
        }
    }

    if ($all_terms) {
        wp_set_object_terms($product->get_id(), array_keys($all_terms), 'product_cat');
    }
}

3. Обработка иерархии категорий в CSV

Если в CSV категории не указаны иерархично, можно добавить колонку с полной иерархией или писать скрипт для пост-обработки после импорта, используя API WooCommerce или WP CLI.

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

После импорта новых товаров проверьте следующие моменты:

Частые ошибки и способы их устранения

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

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

МетодОписаниеПлюсыМинусы
Обработка CSV с полной иерархией Включение полного пути категорий в CSV, например "Одежда > Мужская > Футболки" Простота импорта, меньше кода Требует подготовки данных, не всегда возможно
Хук в functions.php для автоматического добавления родителей Программное добавление родительских категорий по иерархии Гибко, автоматизация, не зависит от CSV Требует навыков PHP, может замедлить импорт
Использование плагинов импорта с поддержкой иерархий Плагины типа WP All Import с настройками иерархии Удобство, визуальный интерфейс Платные, могут перегружать сайт
WooCommerce: как автоматически установить родительскую категорию при изменении товара
13.07.2026
WooCommerce: как вывести иерархию категорий товаров в шаблоне темы
21.06.2026
WooCommerce: автоматическое удаление пустых категорий при импорте товаров
01.07.2026
Автоматическое создание иерархии контента в WordPress с помощью WPRemark
01.03.2026
WooCommerce: исправляем ошибку неправильного присвоения родительской категории товара
20.04.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее