WooCommerce: как изменить вывод цены товара в теме WordPress

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

По умолчанию WooCommerce выводит цену товара с базовым форматированием, которое не всегда подходит под дизайн или бизнес-логику сайта. Например, нужно добавить префикс, изменить валюту, скрыть цену для определённых ролей пользователей или вывести цену с дополнительной информацией (например, «от» для вариативных товаров). В теме WordPress для этого требуется изменить вывод цены с помощью хуков WooCommerce или переопределить шаблоны.

Пошаговое решение: изменение вывода цены в теме

1. Использование фильтра woocommerce_get_price_html

Это самый простой и безопасный способ изменить отображение цены без копирования шаблонов. Добавьте следующий код в functions.php вашей дочерней темы:

add_filter('woocommerce_get_price_html', 'custom_woocommerce_price_html', 10, 2);
function custom_woocommerce_price_html($price, $product) {
    // Пример: добавить префикс "Цена: "
    if ($product->is_type('variable')) {
        $price = '<span class="from-price">От: </span>' . $price;
    } else {
        $price = '<span class="custom-price-label">Цена: </span>' . $price;
    }
    return $price;
}

В этом примере для вариативных товаров добавляется «От:», для простых — «Цена:» перед значением.

2. Переопределение шаблона цены

Если нужно изменить структуру HTML или добавить сложную логику, можно скопировать шаблон woocommerce/templates/single-product/price.php в папку темы your-theme/woocommerce/single-product/price.php и отредактировать его.

Пример добавления дополнительного блока с информацией о скидке:

<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
?>

<p class="price">
    <?php echo $product->get_price_html(); ?>
</p>
<?php if ( $product->is_on_sale() ) : ?>
    <div class="custom-sale-info">Скидка действует до конца месяца</div>
<?php endif; ?>

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

1. Откройте страницу любого товара на фронтенде.
2. Убедитесь, что перед ценой отображается «Цена:» или «От:», а для товаров со скидкой — дополнительный блок.
3. Очистите кеш сайта и браузера, если изменения не видны.
4. Проверьте разные типы товаров (простые, вариативные, со скидкой).

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

  • Код не работает или цена не меняется
    — Проверьте, что фильтр подключён в functions.php дочерней темы и активна именно она.
    — Убедитесь, что нет плагинов, которые переопределяют цену после вашего фильтра.
  • Появляются ошибки PHP
    — Проверьте синтаксис кода, отсутствуют ли лишние символы.
    — Отладьте через WP_DEBUG или error.log.
  • Шаблон price.php не применяется
    — Проверьте правильность пути your-theme/woocommerce/single-product/price.php.
    — Убедитесь, что шаблон не переопределяется плагинами.

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

  • Используйте фильтры вместо копирования шаблонов, чтобы уменьшить дублирование и упростить обновления WooCommerce.
  • Минимизируйте количество PHP-условий в шаблонах, чтобы не замедлять рендеринг страниц.
  • Тестируйте изменения на staging-сайте перед деплоем на продакшен.
  • Если требуется сложная логика отображения цены, рассмотрите внедрение кеширования вывода.

Чек-лист: как изменить вывод цены в теме WooCommerce

  1. Определите, какую именно модификацию цены нужно сделать.
  2. Попробуйте реализовать через фильтр woocommerce_get_price_html.
  3. Если нужно более сложное изменение — переопределите шаблон price.php.
  4. Добавьте CSS классы для стилизации новых элементов.
  5. Очистите кеш и проверьте результат на разных типах товаров.
  6. Отловите ошибки через логи и отладчик.
  7. Тестируйте на мобильных устройствах и в разных браузерах.

Сравнение вариантов изменения вывода цены

Метод Преимущества Недостатки Когда использовать
Фильтр woocommerce_get_price_html Простота, сохраняется совместимость с обновлениями Ограничен изменением HTML цены, не подходит для сложных макетов Добавление префиксов, суффиксов, простая кастомизация
Переопределение шаблона price.php Полный контроль над выводом, можно добавить сложные блоки При обновлении WooCommerce нужно проверять изменения шаблона Сложные изменения верстки, добавление дополнительных элементов
Как добавить поддержку WooCommerce в свою WordPress тему
21.02.2026
Как удалить пустые теги

из темы WordPress

02.07.2026
Как автоматически обновлять темы WordPress без плагинов
13.03.2026
Как добавить поддержку WebP в тему WordPress с примерами кода
22.03.2026
Как добавить динамические строки в WordPress теме с помощью AJAX
13.04.2026