WooCommerce: автоматическое изменение цен и скидок при импорте продуктов

Диагностика задачи: зачем менять цены и скидки при импорте?

При массовом импорте товаров в WooCommerce часто возникает необходимость автоматической корректировки цен и скидок. Например, вы получаете прайс-лист от поставщика, где цены нужно увеличить на определённый процент, добавить скидку или применить фиксированную наценку. Задача — сделать это программно во время импорта, чтобы не редактировать товары вручную.

Как реализовать автоматическое изменение цен при импорте CSV/XML

Использование встроенного хука WooCommerce для фильтрации данных при импорте

Если вы используете стандартный импорт WooCommerce или плагин, поддерживающий хуки, можно перехватить процесс импорта и изменить цену.

Пример кода для функции, которая увеличивает цену на 10% при импорте:

add_filter('woocommerce_product_import_pre_insert_product_object', 'custom_adjust_price_on_import', 10, 2);
function custom_adjust_price_on_import( $product, $data ) {
    // Проверяем, есть ли цена
    $price = $data['regular_price'] ?? $product->get_regular_price();
    if ( $price ) {
        $new_price = floatval($price) * 1.10; // +10%
        $product->set_regular_price( round($new_price, 2) );

        // Например, добавим скидку 5% от новой цены
        $sale_price = $new_price * 0.95;
        $product->set_sale_price( round($sale_price, 2) );
    }
    return $product;
}

Этот код нужно добавить в файл functions.php вашей темы или в плагин функционала.

Пример изменения цены с учётом категории товара

Можно задать разные коэффициенты в зависимости от категории:

add_filter('woocommerce_product_import_pre_insert_product_object', 'adjust_price_by_category_on_import', 10, 2);
function adjust_price_by_category_on_import( $product, $data ) {
    $categories = $data['categories'] ?? [];
    $price = $data['regular_price'] ?? $product->get_regular_price();
    if ( !$price ) return $product;

    $coef = 1.0;
    foreach ($categories as $cat) {
        if ( strtolower($cat) === 'electronics' ) {
            $coef = 1.15; // +15% для электроники
            break;
        } elseif ( strtolower($cat) === 'books' ) {
            $coef = 0.9; // -10% для книг
            break;
        }
    }

    $new_price = floatval($price) * $coef;
    $product->set_regular_price( round($new_price, 2) );
    $product->set_sale_price(''); // Сброс скидки

    return $product;
}

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

  • Импортируйте несколько товаров с разными ценами и категориями через ваш CSV/XML.
  • Проверьте в админке WooCommerce, что цены изменились согласно логике.
  • На витрине сайта убедитесь, что цена и скидка отображаются правильно.
  • Используйте инструменты разработчика или отладчик, чтобы убедиться, что хук срабатывает.

Частые ошибки при автоматическом изменении цен

  • Неправильный ключ массива $data. В разных импортах структура данных отличается, важно проверить, как именно передаются цены и категории.
  • Неочищенные или нечисловые значения цены. Всегда приводите цены к float, иначе ошибки.
  • Сброс скидок при установке цены. Если не сбрасывать sale_price при изменении regular_price, могут возникнуть конфликты.
  • Отсутствие проверки категорий приводит к применению неправильных коэффициентов.

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

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

Сравнение подходов к автоматическому изменению цен

МетодПлюсыМинусы
Хук woocommerce_product_import_pre_insert_product_objectГибкое изменение цен, работает на этапе импорта, без сторонних плагиновТребует навыков PHP, нужно учитывать структуру данных
Плагины для массового изменения цен (например, WooCommerce Bulk Editor)Интуитивный интерфейс, подходит для постимпортаМожет быть медленнее, не интегрируется с импортом напрямую
Изменение CSV перед импортом (Excel, скрипты)Простое решение без кодаРучная работа, риски ошибок при больших объемах
Как создать автоматические резервные копии в WordPress с помощью плагинов
25.11.2025
Как добавить поддержку WebP в WordPress без плагинов
13.01.2026
Как создать автоматический импорт отзывов в WordPress с подтверждением
10.03.2026
WooCommerce: как установить ограничения по стране доставки для товаров
27.05.2026
Как использовать ключевые слова в WordPress для улучшения SEO
28.03.2026

Плагин службы технической поддержки для WordPress. Создание, просмотр и ответ на тикеты. Уведомление пользователей и другие функции.