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

|

Почему важно автоматизировать изменение цен при акциях в WooCommerce?

Ручное обновление цен товаров во время распродаж и акций — частая причина ошибок и потери времени. Автоматизация позволяет:

Рассмотрим, как с помощью стандартных хуков WooCommerce и функций PHP автоматически изменять цены товара при акциях без сторонних плагинов.

Диагностика проблемы: как понять, что цены не меняются автоматически?

Если вы настроили акции вручную, но цены не отображаются с учетом скидок на витрине или в корзине, возможно:

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

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

1. Добавление фильтра для изменения цены товара

В файл functions.php вашей дочерней темы или в кастомный плагин добавьте следующий код:

add_filter('woocommerce_product_get_price', 'custom_dynamic_sale_price', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'custom_dynamic_sale_price', 10, 2);
add_filter('woocommerce_product_get_sale_price', 'custom_dynamic_sale_price', 10, 2);

function custom_dynamic_sale_price($price, $product) {
    if (!$product->is_on_sale()) {
        // Проверяем условие для акции, например, категория или тег
        if (has_term('sale-category', 'product_cat', $product->get_id())) {
            // Пример: скидка 20% на товары категории 'sale-category'
            $discounted_price = $price * 0.8;
            return round($discounted_price, 2);
        }
    }
    return $price;
}

Этот код проверяет, находится ли товар в категории sale-category. Если да, то цена уменьшается на 20%. Можно заменить условие на тег, мета-данные или другие параметры.

2. Автоматическое обновление цены в корзине и на странице товара

Чтобы цена корректно отображалась в корзине, добавьте:

add_action('woocommerce_before_calculate_totals', 'custom_cart_item_price', 10, 1);

function custom_cart_item_price($cart) {
    if (is_admin() && !defined('DOING_AJAX'))
        return;

    foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
        $product = $cart_item['data'];
        if (!$product->is_on_sale()) {
            if (has_term('sale-category', 'product_cat', $product->get_id())) {
                $original_price = $product->get_price();
                $new_price = $original_price * 0.8; // скидка 20%
                $product->set_price(round($new_price, 2));
            }
        }
    }
}

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

1. Откройте страницу товара из категории sale-category и убедитесь, что цена уменьшена на 20%.

2. Добавьте товар в корзину и проверьте, что итоговая цена в корзине соответствует скидке.

3. Очистите кэш сайта и браузера, если скидка не отображается сразу.

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

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

Сравнение подходов изменения цен при акциях

СпособПлюсыМинусыКомпромисс
Ручное изменение цен в админкеПросто, без кодаДолго, ошибки, нет автоматизацииПодходит для небольшого количества товаров
Плагины для скидок и акцийМного функций, гибкостьДополнительная нагрузка, возможные конфликтыИспользовать проверенные плагины, например Clearfy Pro для оптимизации
Код с хуками WooCommerce (этот метод)Легко кастомизируется, без лишних плагиновНужно писать и тестировать кодОптимально для разработчиков, контролирующих весь сайт
Как создать автоматические решения для очистки базы данных WordPress
10.01.2026
Как удалить лишние метаданные из изображений в WordPress для ускорения сайта
12.12.2025
Как добавить настройки в админ-панель WordPress: пошаговое руководство с примерами кода
27.11.2025
WooCommerce: автоматическое изменение стоимости товаров при акциях без плагинов
10.07.2026
Как автоматизировать удаление старых черновиков в WordPress без плагинов
20.02.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее