Как скрыть цены WooCommerce для незарегистрированных пользователей

Диагностика задачи: зачем скрывать цены для гостей в WooCommerce?

В ряде проектов необходимо показывать цены товаров только авторизованным пользователям. Это актуально для B2B-магазинов, закрытых клубов или сайтов с ограниченным доступом к прайс-листу. Стандартный WooCommerce не предоставляет такой функционал, поэтому требуется кастомизация или использование плагинов. Важно понять, что просто скрыть цену — мало, нужно также заблокировать доступ к кнопкам покупки, чтобы не дать гостям возможности оформить заказ.

Пошаговое решение: скрываем цены и кнопки покупки с помощью кода

1. Скрытие цены для гостей

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

add_filter('woocommerce_get_price_html', 'hide_price_for_guests', 10, 2);
function hide_price_for_guests($price, $product) {
    if (!is_user_logged_in()) {
        return '<span class="price-hidden">Требуется регистрация для просмотра цены</span>';
    }
    return $price;
}

2. Скрытие кнопки «Добавить в корзину»

Чтобы убрать кнопку для гостей, используем следующий фильтр:

add_filter('woocommerce_is_purchasable', 'disable_purchase_for_guests', 10, 2);
function disable_purchase_for_guests($purchasable, $product) {
    if (!is_user_logged_in()) {
        return false;
    }
    return $purchasable;
}

Это не только скроет кнопку, но и предотвратит возможность покупки через прямой URL.

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

  1. Откройте сайт в режиме инкогнито или выйдите из аккаунта — цены должны быть заменены на текст «Требуется регистрация для просмотра цены».
  2. Кнопка «В корзину» должна отсутствовать.
  3. Авторизуйтесь — цены и кнопки должны отображаться корректно.
  4. Попробуйте перейти по ссылке на добавление товара в корзину — для гостей должно быть запрещено.

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

  • Кэширование страницы: При использовании плагинов кеширования, текст может не обновляться для разных пользователей. Решение: добавить исключения по кукам или отключить кеш для страниц магазина.
  • Использование сторонних тем и плагинов: Некоторые темы выводят цену не через стандартный хук, а напрямую. Нужно проверить шаблоны WooCommerce в вашей теме и при необходимости внести правки.
  • Кнопка «Купить в один клик» или другие методы покупки: Такие кнопки могут обходить фильтр woocommerce_is_purchasable. Необходимо дополнительно проверять права доступа на уровне шаблонов.

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

  • Не используйте JavaScript для скрытия цен — это легко обходится и не защищает данные.
  • Добавляйте проверку на серверной стороне, чтобы блокировать запросы на покупку.
  • Для удобства администрирования можно интегрировать условие с плагином управления пользователями, например, чтобы цены были доступны только определённым ролям.
  • Если вы используете кеширование страниц, настройте исключения для страниц магазина и корзины по кукам авторизации.

Сравнение вариантов решения

МетодПлюсыМинусыРекомендации
Код в functions.phpБесплатно, гибко, без плагиновТребует навыков, зависит от темыПодходит для опытных разработчиков
Плагин «Hide Price Until Login»Простая настройка, интерфейсМожет быть платным, нагрузкаДля быстрого решения без кода
Кастомизация темыПолный контрольТрудоёмко, требует поддержкиДля сложных проектов с уникальным дизайном
Как удалить все комментарии в WordPress с помощью кода и плагинов
18.02.2026
Автоудаление заказов WooCommerce по статусу и времени: практическое руководство
05.06.2026
Автоматическое удаление неактивных заказов WooCommerce
23.05.2026
Автоматическое удаление старых черновиков в WordPress
22.12.2025
Как повысить производительность WooCommerce при большом количестве товаров
26.05.2026