Автоматическое создание категорий при импорте товаров WooCommerce

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

Почему важно автоматическое создание категорий

При импорте товаров из CSV или XML файла, в котором указаны категории как текстовые значения, WooCommerce по умолчанию не создаёт новые категории. Если категория отсутствует на сайте, товар просто не будет связан с ней, что приводит к неструктурированному каталогу и ухудшению пользовательского опыта.

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

  • Сохранять структуру каталога без ручного вмешательства.
  • Обеспечивать корректное отображение товаров в нужных разделах.
  • Экономить время при массовом обновлении ассортимента.

Подходы к автоматическому созданию категорий

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

  • Использовать специализированные плагины с поддержкой создания категорий.
  • Написать свой обработчик импорта с использованием хука woocommerce_product_import_inserted_product_object.
  • Модифицировать стандартный импорт WooCommerce через фильтры и хуки.

Плагины для автоматического создания категорий

Для удобства можно использовать плагины, которые поддерживают импорт товаров с созданием категорий из файла. Например:

  • WP All Import — мощный инструмент для импорта с настройкой правил создания категорий.
  • WooCommerce CSV Import Suite — официальный плагин с поддержкой категорий.

Однако, часто достаточно написать собственный код для более тонкой настройки.

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

Ниже приведён пример функции, которая автоматически создаёт категорию, если её нет, и присваивает товару. Функция подключается к хук woocommerce_product_import_inserted_product_object, который срабатывает после импорта каждого товара.

add_action('woocommerce_product_import_inserted_product_object', 'wprus_create_categories_on_import', 10, 2);
function wprus_create_categories_on_import($product, $data) {
    // Предполагается, что в CSV поле с категориями называется 'categories' и категории разделены ";"
    if (empty($data['categories'])) {
        return;
    }
    $categories_str = $data['categories'];
    $categories = array_map('trim', explode(';', $categories_str));

    $term_ids = [];
    foreach ($categories as $cat_name) {
        if (empty($cat_name)) continue;

        // Проверяем, есть ли категория
        $term = get_term_by('name', $cat_name, 'product_cat');

        if (!$term) {
            // Создаём новую категорию
            $new_term = wp_insert_term($cat_name, 'product_cat');
            if (!is_wp_error($new_term)) {
                $term_ids[] = $new_term['term_id'];
            }
        } else {
            $term_ids[] = $term->term_id;
        }
    }

    if (!empty($term_ids)) {
        // Присваиваем категории товару
        wp_set_object_terms($product->get_id(), $term_ids, 'product_cat');
    }
}

В этом примере ожидается, что в файле импорта поле категорий называется categories, категории перечислены через точку с запятой. Код проверяет наличие каждой категории, создаёт её при отсутствии и присваивает товару.

Обработка иерархии категорий

Часто категории бывают вложенными, например: "Одежда > Мужская > Футболки". Для поддержки иерархии можно использовать разделитель, например, > и создавать категории с указанием родителя.

Пример обработки вложенных категорий:

function wprus_create_hierarchical_categories($category_path) {
    $parent_id = 0;
    $categories = array_map('trim', explode('>', $category_path));

    foreach ($categories as $cat_name) {
        if (empty($cat_name)) continue;

        $term = get_term_by('name', $cat_name, 'product_cat');

        if (!$term) {
            $new_term = wp_insert_term($cat_name, 'product_cat', ['parent' => $parent_id]);
            if (is_wp_error($new_term)) {
                return false;
            }
            $parent_id = $new_term['term_id'];
        } else {
            $parent_id = $term->term_id;
        }
    }
    return $parent_id;
}

И далее в основном коде можно использовать эту функцию для каждой категории из импорта.

Советы по работе с импортом и категориями

  • Перед массовым импортом сделайте резервную копию базы данных.
  • Тестируйте импорт на тестовом сайте с небольшим набором товаров.
  • Проверяйте корректность названий категорий и избегайте дублирования.
  • Для удобства можно создать отдельный CSV с иерархией категорий и импортировать их отдельно.
  • Используйте Clearfy Pro для оптимизации и автоматизации WooCommerce и WordPress.

Заключение

Автоматическое создание категорий при импорте товаров — важный элемент эффективного управления WooCommerce магазином. Используя приведённые примеры кода и рекомендации, вы сможете настроить импорт так, чтобы категории создавались автоматически, что значительно ускорит работу с каталогом и улучшит навигацию для клиентов.

WooCommerce: как автоматически удалять заказы после определённого времени
19.06.2026
Как использовать внутренние переадресации в WordPress для оптимизации SEO
15.12.2025
WooCommerce: как автоматически удалять товары по дате публикации
24.06.2026
Как изменить вывод WooCommerce на странице товара в WordPress: практические примеры
11.03.2026
Как отключить открытый REST API в WordPress без плагинов
28.02.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее