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)Готовое решение, много настроек, поддержкаНагрузка на сайт, зависимость от обновлений, платные версииИспользовать для сложных акций
Кастомный код (фильтры цен)Легковесно, гибко, без лишних зависимостейТребует поддержки, ограничена сложность правилПодходит для простых и средних акций
Как сделать удалённый вызов PHP функций в WordPress через AJAX
19.01.2026
WooCommerce: автоматическое изменение стоимости товаров при акциях без плагинов
26.07.2026
WooCommerce: решение проблемы с неактивными кнопками корзины после обновления
19.06.2026
Как избежать проблем с вариациями товаров WooCommerce при массовом импорте
20.04.2026
Как создать автоматическое отключение подписок в WordPress по условиям
28.01.2026
×
Сайт, который вау!
-15%

на премиум-тему
JournalX для WordPress

Хватай промо и действуй ⋙