
Привет всем! Есть такая потребность в магазине Woocommerce, если цена равна нулю – то есть бесплатный товар, то нужно вывести свою кастомную надпись. Например “Бесплатно” или “Уточняйте цену”.

Делаю такой action в файле functions.php
add_filter( 'woocommerce_get_price_html', 'product_price_free_zero_empty', 100, 2 );
function product_price_free_zero_empty( $price, $product ){
if ( '' === $product->get_price() || 0 == $product->get_price() ) {
$price = 'Цену уточняйте';
}
return $price;
}Безопасный вариант для дочерней темы
Не добавляйте код напрямую в functions.php родительской темы: при обновлении изменения исчезнут. Используйте дочернюю тему или небольшой site-specific плагин. Перед правкой сделайте резервную копию и проверьте результат на тестовой копии магазина.
В условии важно различать пустую цену и числовой ноль. Пустая цена часто означает, что товар не продаётся обычным способом, а ноль может использоваться для бесплатного товара. Если для этих случаев нужны разные подписи, разделите проверки:
1add_filter( 'woocommerce_get_price_html', function ( $html, $product ) {
2 $raw_price = $product->get_price();
3
4 if ( '' === $raw_price ) {
5 return '<span class="price-on-request">Цена по запросу</span>';
6 }
7
8 if ( 0.0 === (float) $raw_price ) {
9 return '<span class="price-free">Бесплатно</span>';
10 }
11
12 return $html;
13}, 100, 2 );Текст выводится как HTML, поэтому не подставляйте в него данные пользователя без экранирования. После внедрения проверьте карточку товара, каталог, вариативные товары, корзину и структурированные данные Product. Визуальная подпись не должна противоречить фактической цене, которую WooCommerce передаёт в корзину и поисковую разметку.
Когда фильтра недостаточно
Если цена рассчитывается по параметрам, зависит от авторизации или должна запрашиваться у менеджера, одной замены текста мало. Нужно отключить обычную покупку, добавить форму запроса и явно объяснить условия. Иначе покупатель увидит «по запросу», но сможет добавить товар с нулевой стоимостью в корзину.
Вариативные товары и кэш
У вариативного товара итоговая цена зависит от выбранной вариации. Проверьте случай, где одна вариация бесплатная, а другая платная: общий фильтр может заменить весь диапазон одной подписью. Для сложного правила лучше отдельно обрабатывать доступность покупки и цену конкретной вариации.
После изменения очистите кэш страницы, object cache и CDN. Если каталог продолжает показывать старую цену, проверьте, не сохраняет ли её тема или плагин фильтрации в собственном шаблоне.
SEO и юридическая ясность
Подпись «цена по запросу» должна соответствовать реальному процессу продажи. Объясните, от чего зависит расчёт и как быстро отвечает менеджер. Если товар бесплатный, не скрывайте обязательные платежи в доставке или подписке. Прозрачное условие полезнее для конверсии, чем формальная замена числа на текст.
Продолжить по теме: техническая поддержка сайтов.


