Как использовать хуки для автоматического изменения стоимости товаров WooCommerce

|

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

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

Какие хуки отвечают за отображение цены

Для корректного изменения цены в WooCommerce используются фильтры:

Используя эти фильтры, вы можете подменять цену без изменения записи в БД.

Пошаговое решение: пример изменения цены для определённой роли пользователя

Предположим, что для пользователей с ролью wholesale_customer нужно сделать скидку 15% на все товары.

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

function custom_price_for_wholesale($price, $product) {
    if (!is_user_logged_in()) {
        return $price;
    }
    $user = wp_get_current_user();
    if (in_array('wholesale_customer', (array) $user->roles)) {
        $discount = 0.15; // 15% скидка
        $new_price = $price * (1 - $discount);
        return round($new_price, 2);
    }
    return $price;
}

Этот код подключается к фильтрам, проверяет роль пользователя и возвращает новую цену. Аналогично можно добавить условия по времени или другим параметрам.

Проверка результата

Чтобы убедиться, что цена меняется корректно:

  1. Войдите на сайт под пользователем с ролью wholesale_customer и откройте страницу товара — цена должна отображаться со скидкой 15%.
  2. Выйдите или войдите под обычным пользователем — цена должна быть без изменений.
  3. Проверьте корзину и оформление заказа — итоговая сумма должна соответствовать новой цене.

Для отладки можно временно добавить error_log() с выводом цены в файл debug.log.

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

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

Сравнение подходов к изменению цены в WooCommerce

МетодПлюсыМинусыПример использования
Фильтры (хуки)Не меняет БД, динамично, гибкоСложнее отладка, требует знаний хуковПример выше — скидка по роли
Изменение цены в админке вручнуюПростоНе масштабируемо, требует ручной работыРедактирование товара
Плагины скидок и динамического ценообразованияУдобный UI, готовые функцииВесомый вес, может конфликтоватьWooCommerce Dynamic Pricing
Как добавить уникальные карты в WordPress с применением Yelly
08.03.2026
Как создать динамический список с постами WordPress с использованием AJAX
18.03.2026
Как создать уникальные URL для товаров в WooCommerce: практические решения
09.01.2026
Как отключить автопроизвольный звонок в WordPress без плагинов
25.12.2025
Как заблокировать доступ к файлам в медиабиблиотеке WordPress через .htaccess
15.05.2026
×

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

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

пишет статьи

готовит SEO

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

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