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

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

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

Причины могут быть следующие:

  • В шаблоне Elementor используются статичные поля цены, которые не берут данные из текущих акций WooCommerce.
  • Кеширование страниц или элементов блокирует обновление цены.
  • Отсутствует поддержка динамических данных WooCommerce в пользовательских виджетах.

Как в Elementor вывести динамическую цену товара с учётом акций WooCommerce

Чтобы цена товара на странице, созданной в Elementor, автоматически изменялась при акциях, используйте динамический тег WooCommerce для цены товара. В Elementor Pro в виджете «Динамический текст» или «Текст» можно вставить динамическое поле Цена товара, которое автоматически учитывает скидки.

Если же вы создаёте кастомный виджет или шаблон, используйте следующий PHP-код для получения актуальной цены с учётом скидок:

global $product;

if ( ! $product ) {
    return;
}

// Получаем цену с учётом акций
$price = $product->get_price_html();
echo $price;

Этот код выводит цену товара с HTML-разметкой, где отображается старая цена и цена со скидкой, если акция активна.

Пример функции для шорткода вывода динамической цены

function show_dynamic_price_shortcode() {
    global $product;
    if ( ! $product ) return '';
    return $product->get_price_html();
}
add_shortcode('dynamic_price', 'show_dynamic_price_shortcode');

Вставьте шорткод [dynamic_price] в Elementor через виджет «Текст» для вывода цены с учётом скидки.

Пошаговое решение: настройка шаблона товара с динамической ценой в Elementor

  1. Создайте или откройте шаблон продукта в Elementor (через WooCommerce Single Product Template).
  2. Добавьте виджет «Текст» или «Динамический текст».
  3. Выберите динамическое содержимое — «Цена продукта» (Product Price).
  4. Если кастомный код, используйте приведённый выше PHP-шорткод и вставьте его через плагин, позволяющий добавить PHP-шорткоды, либо через свой кастомный виджет.
  5. Отключите кеширование для страниц с товарами или настройте кеш так, чтобы цены обновлялись своевременно.

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

Чтобы убедиться, что цены корректно обновляются:

  • Перейдите на страницу товара с активной акцией или скидкой.
  • Проверьте, что цена отображается с зачёркнутой старой ценой и новой ценой акции.
  • Обновите страницу и отключите кеш браузера (Ctrl+F5), чтобы исключить кеширование.
  • Если используете кеширующий плагин, очистите кеш сайта и CDN.

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

  • Цена не меняется, всегда показывает базовую цену. Проверьте, что в шаблоне используется динамическое поле «Цена продукта» или метод get_price_html(), а не статичный текст.
  • Кеширование не даёт обновиться цене. Настройте исключения кеша для страниц продуктов или временно отключите кеш при тестах.
  • Код не работает в шорткоде. Убедитесь, что глобальная переменная $product доступна. Если нет, попробуйте передать ID текущего продукта в функцию.
  • В Elementor без Pro нельзя использовать динамические теги. Тогда используйте шорткод с динамической ценой, как показано в примере.

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

  • Не вставляйте произвольный PHP-код в редактор Elementor — используйте шорткоды или кастомные плагины для хранения кода.
  • Оптимизируйте кеширование: исключайте страницы с динамическими ценами из кеша, чтобы избежать показа устаревших данных.
  • Проверяйте совместимость вашего шаблона с WooCommerce после обновлений плагинов и темы.

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

ВариантПлюсыМинусы
Динамический тег "Цена продукта" в Elementor ProПростота, поддержка акций, обновляется автоматическиТребует Elementor Pro
Шорткод с PHP функцией get_price_html()Работает без Pro, гибкость, можно кастомизироватьНужно добавлять код в functions.php или плагин, требует знания PHP
Статичный текст с ценойПросто, быстроНе обновляется при акциях, требует ручного редактирования
Как использовать хуки для динамического изменения элементов в Elementor
17.03.2026
Как добавить уникальные атрибуты ALT к изображениям в WordPress и Elementor
19.12.2025
Как создать динамический контент в Elementor с помощью WPRemark
05.01.2026
Как удалить неиспользуемые плагины в WordPress: практические советы
27.11.2025
Как добавить собственный CSS в Elementor без потери при обновлении
12.12.2025