WooCommerce: автоматическое изменение цены и наличия товаров при импорте CSV

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

При массовом обновлении товаров через CSV часто возникает необходимость не просто загрузить данные, а автоматически корректировать цены и наличие товаров по определённым правилам. Стандартный импорт WooCommerce (через встроенный импортёр или плагин WP All Import) хорошо работает с прямым обновлением, но не поддерживает сложную логику изменения данных во время импорта. В результате приходится вручную корректировать данные или запускать отдельные скрипты после импорта.

Основные симптомы:

  • Импорт обновляет цены и статус наличия, но без учёта бизнес-правил (скидки, минимальные/максимальные значения и т.п.).
  • Необходимость менять цену в зависимости от старой цены, например, увеличивать на 10% или снижать при распродаже.
  • Невозможно автоматически установить статус "в наличии" или "нет в наличии" при определённых условиях.

Пошаговое решение: автоматическое изменение цены и наличия при импорте CSV

1. Подготовка CSV и определение правил

В CSV должны быть обязательные поля для идентификации товара (ID или SKU) и исходные данные цены и наличия. Правила изменения можно задать в коде, например:

  • Если цена больше 1000, снизить на 15%
  • Если цена меньше 1000, увеличить на 5%
  • Если количество на складе равно 0, установить статус "нет в наличии"

2. Использование хука woocommerce_product_import_inserted_product_object

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

add_action('woocommerce_product_import_inserted_product_object', 'custom_update_price_and_stock', 10, 1);function custom_update_price_and_stock($product) {    $price = floatval($product->get_regular_price());    $stock_quantity = $product->get_stock_quantity();    // Изменяем цену по условию    if ($price > 1000) {        $new_price = $price * 0.85; // скидка 15%    } else {        $new_price = $price * 1.05; // наценка 5%    }    $product->set_regular_price(round($new_price, 2));    // Обновляем статус наличия    if ($stock_quantity === 0) {        $product->set_stock_status('outofstock');    } else {        $product->set_stock_status('instock');    }    $product->save();}

3. Импорт CSV

Запускаем импорт стандартным средством WooCommerce или плагином. После создания или обновления каждого товара сработает функция, которая подкорректирует цену и наличие.

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

  • После импорта откройте карточку любого товара, чтобы убедиться в изменении цены и статуса наличия.
  • Проверьте в админке WooCommerce в списке товаров столбцы "Цена" и "Наличие" — должны соответствовать правилам из кода.
  • Можно вывести в консоль или лог значения в функции для отладки, добавив error_log() с ключевыми параметрами.

Частые ошибки и как их исправить

  • Изменения не применяются: возможно, хук не подключён или приоритет слишком низкий. Проверьте, что функция подключена в файле functions.php активной темы или в плагине, и приоритет 10.
  • Цена не обновляется: убедитесь, что цена доступна и корректно преобразуется в число. Проверьте, что get_regular_price() возвращает значение.
  • Статус наличия не меняется: убедитесь, что управление запасами включено для товаров ($product->get_manage_stock() возвращает true). Если нет, включите в настройках WooCommerce или установите через код.
  • Ошибки при сохранении: могут быть конфликты с плагинами кеширования или безопасности. Временно отключите их для теста.

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

  • Используйте wp_cache_flush() после массового импорта, если работаете с кеширующими плагинами, чтобы обновить данные.
  • Для больших CSV используйте WP-CLI import или разбивайте файлы на части, чтобы избежать таймаутов.
  • Всегда делайте резервную копию базы перед массовым импортом и изменениями.
  • Не используйте сложные вычисления в функции обработки каждого товара — это замедлит импорт.

Сравнение вариантов изменения цены и наличия при импорте CSV

МетодПлюсыМинусыКомпромисс
Стандартный импорт WooCommerceПростота, встроенныйНет логики изменения, только замена данныхПодходит для простых обновлений
Плагин WP All Import с PHP-скриптамиГибкость, мощные настройкиПлатный, требует изученияДля сложных проектов и регулярных обновлений
Кастомный хук woocommerce_product_import_inserted_product_objectПолный контроль, бесплатноНужны навыки PHP, сложнее настраиватьОптимально для разработчиков, готовых к кастомизации
Как закрыть от индексации отдельные страницы WordPress без поломки SEO
22.08.2026
Как закрыть дубли страниц в WordPress от пагинации, фильтров и параметров
19.08.2026

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.