Как вывести надпись если цена равна 0 — WooCommerce

Решение для WooCommerce: как заменить цену "0" на произвольный текст типа "Бесплатно" или "По запросу".

1 октября 2022 г.3 мин
Поделиться:
Корректное сообщение вместо нулевой цены товара интернет-магазина

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

Корректное сообщение вместо нулевой цены товара интернет-магазина

Делаю такой action в файле functions.php

TEXT
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 плагин. Перед правкой сделайте резервную копию и проверьте результат на тестовой копии магазина.

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

PHP
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 и юридическая ясность

Подпись «цена по запросу» должна соответствовать реальному процессу продажи. Объясните, от чего зависит расчёт и как быстро отвечает менеджер. Если товар бесплатный, не скрывайте обязательные платежи в доставке или подписке. Прозрачное условие полезнее для конверсии, чем формальная замена числа на текст.

Продолжить по теме: техническая поддержка сайтов.

Отзывы читателей

Мнения пользователей, которые уже изучили материал

Средняя оценка
0.0
Всего отзывов
0
отзыва

Пока нет отзывов

Будьте первым, кто оставит отзыв о статье.

Оставить отзыв

Поделитесь впечатлением — это помогает другим читателям оценить материал.

Отзыв будет опубликован после проверки.

Вам также может быть интересно

Нужна помощь с вашим проектом?

Проведём аудит и улучшим производительность вашего сайта