Автоматическое изменение стоимости товаров в WooCommerce по условиям

|

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

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

Как реализовать автоматическое изменение цены товара в WooCommerce через код

Самый гибкий способ — использовать фильтр woocommerce_product_get_price для изменения цены при выводе на сайте и woocommerce_product_get_regular_price для обычной цены. Это позволяет менять цену динамически без изменения данных в базе.

Пример: скидка 10% для товаров категории «Распродажа»

add_filter('woocommerce_product_get_price', 'custom_dynamic_price', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'custom_dynamic_price', 10, 2);

function custom_dynamic_price($price, $product) {
    if (has_term('rasprodazha', 'product_cat', $product->get_id())) {
        return $price * 0.9; // скидка 10%
    }
    return $price;
}

Этот код проверяет, есть ли у товара категория rasprodazha, и если да — уменьшает цену на 10% при выводе.

Изменение цены в зависимости от роли пользователя

add_filter('woocommerce_product_get_price', 'role_based_price_adjustment', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'role_based_price_adjustment', 10, 2);

function role_based_price_adjustment($price, $product) {
    if (current_user_can('wholesale_customer')) { // роль оптовика
        return $price * 0.85; // скидка 15%
    }
    return $price;
}

Пошаговое решение для внедрения автоматического изменения цен

  1. Определите условие изменения цены (категория, роль пользователя, количество и т.п.).
  2. Добавьте в файл functions.php вашей дочерней темы или в собственный плагин код с нужным фильтром woocommerce_product_get_price.
  3. Проверьте работоспособность на страницах товаров и в корзине.
  4. Если нужно, добавьте фильтр для цены со скидкой — woocommerce_product_get_sale_price.
  5. Тестируйте на разных типах товаров (простой, вариативный).

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

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

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

Сравнение вариантов реализации автоматической смены цены

МетодПлюсыМинусыПример использования
Фильтр woocommerce_product_get_priceДинамичность, не меняет базу, простотаНе всегда меняет цену в корзине без дополнительного кодаСкидка по категории или роли
Обновление цены в базе (через WP-Cron)Цена меняется для всех процессов, включая API, отчётыРиск ошибок при обновлении базы, нагрузка на БДСезонные акции с массовым изменением
Использование плагинов скидок/ценПростота настройки, поддержкаМожет влиять на производительность, ограниченность условийРасширенные скидочные правила
Как создать собственный шорткод в WordPress с примерами кода
31.10.2025
Оптимизация кода и загрузки в WordPress для бизнес-сайтов
09.11.2025
Как правильно использовать хуки в WordPress для бизнес-сайтов
22.12.2025
Как автоматизировать управление комментариями в WordPress: практическое руководство с примерами кода
25.01.2026
Как сделать собственную функцию обработки формы в WordPress: практическое руководство для разработчиков
23.11.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙