WooCommerce: автоматическое изменение стоимости товаров при акциях без плагинов

|

Диагностика задачи: зачем нужна автоматизация изменения цен в WooCommerce

В WooCommerce часто возникает необходимость динамически менять цены товаров при проведении акций — скидки на группы товаров, временные распродажи или специальные предложения. Ручное изменение цен неудобно и рискованно при большом каталоге. Автоматизация позволяет централизованно управлять скидками без плагинов, снижая нагрузку на базу и минимизируя ошибки.

Пошаговое решение: как программно изменить цены товаров при акциях

1. Используем хук woocommerce_get_price для динамической подмены цены

Этот фильтр позволяет изменить цену товара в реальном времени при выводе на фронтенде и в админке. Код ниже применяет скидку 20% для всех товаров из категории "sale" в течение заданного периода.

add_filter('woocommerce_get_price', 'apply_sale_discount', 10, 2); 
function apply_sale_discount($price, $product) {
    if (!is_admin()) {
        $sale_cat = 'sale'; // slug категории для акции
        // Проверяем дату акции
        $start_date = strtotime('2024-06-01 00:00:00');
        $end_date = strtotime('2024-06-15 23:59:59');
        $now = current_time('timestamp');
        if ($now >= $start_date && $now <= $end_date) {
            if (has_term($sale_cat, 'product_cat', $product->get_id())) {
                // Применяем скидку 20%
                $price = $price * 0.8;
            }
        }
    }
    return $price;
}

2. Обработка вариативных товаров

Для вариативных товаров нужно использовать фильтр woocommerce_variation_prices_price, чтобы скидка корректно применялась к варьациям:

add_filter('woocommerce_variation_prices_price', 'apply_sale_discount_variations', 10, 3);
function apply_sale_discount_variations($price, $variation, $product) {
    $sale_cat = 'sale';
    $start_date = strtotime('2024-06-01 00:00:00');
    $end_date = strtotime('2024-06-15 23:59:59');
    $now = current_time('timestamp');
    if ($now >= $start_date && $now <= $end_date) {
        if (has_term($sale_cat, 'product_cat', $product->get_id())) {
            $price = $price * 0.8;
        }
    }
    return $price;
}

Как проверить, что автоматическое изменение цен работает

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

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

Сравнение подходов: плагин или кастомный код

МетодПреимуществаНедостаткиКомпромисс
Плагин (например, WooCommerce Dynamic Pricing)Готовое решение, много настроек, поддержкаНагрузка на сайт, зависимость от обновлений, платные версииИспользовать для сложных акций
Кастомный код (фильтры цен)Легковесно, гибко, без лишних зависимостейТребует поддержки, ограничена сложность правилПодходит для простых и средних акций
Как избежать проблем с дублированием артикулов (SKU) при массовом импорте товаров в WooCommerce
08.05.2026
Автоматическое удаление старых файлов из медиа библиотеки WordPress
10.02.2026
Оптимизация базы данных WordPress: практические советы и примеры кода
19.11.2025
Как автоматически разделить длинные посты на страницы в WordPress
08.03.2026
Как добавить настройки в админ-панель WordPress: пошаговое руководство с примерами кода
27.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше