Представьте: на сайт заходит розничный покупатель, видит цену 1 200 рублей за упаковку и уходит — потому что ему нужна одна штука, а не коробка. Через минуту заходит менеджер компании, видит ту же цену и тоже уходит: он-то рассчитывал на оптовую скидку. Сайт один, а покупатели разные, и один прайс не может устроить обоих. С этого обычно и начинается история с оптовыми ценами в WooCommerce.
Задача кажется простой: показать разным людям разные цены. На практике всё упирается в детали — кто считается оптовиком, как он это подтверждает, что видит до подтверждения и не ломается ли от этого кэш. Разберём по порядку.
Два покупателя на одном сайте
Розница и опт отличаются не только ценой. Розничному покупателю важны картинки, отзывы и быстрая доставка. Оптовику — артикулы, минимальная партия, наличие на складе и отсрочка. Если попытаться сделать одну страницу «для всех», она не устроит никого: розницу отпугнут коробки и НДС, опт — красивые баннеры вместо таблицы с характеристиками.
Поэтому первый вопрос не «какой плагин поставить», а «что должен видеть каждый». Обычно получается две витрины: розничная с ценами и корзиной и оптовая с ценами по запросу или после входа. Иногда — одна витрина, но с переключателем и разными ценами для авторизованных.
Один каталог или два
Технически можно пойти двумя путями. Первый — один каталог, где цена меняется в зависимости от роли пользователя или группы покупателей. Второй — два отдельных каталога: розничный и оптовый, со своими товарами и ценами.
Первый путь удобнее для поддержки: один товар, один артикул, один остаток. Но он требует аккуратной настройки ролей и кэша. Второй проще с точки зрения логики, зато товары приходится дублировать, а остатки — синхронизировать вручную. Для магазина на несколько сотен позиций дубли обычно превращаются в головную боль: цена обновилась в одном каталоге, а во втором осталась старой.
Если ассортимент общий и отличается только цена, почти всегда лучше один каталог с группами покупателей. Если оптовое направление — это по сути другой бизнес с другими товарами, честнее сделать отдельный раздел или поддомен.
Где чаще всего ломается
Оптовые цены в WooCommerce почти всегда делают через плагины — Wholesale Suite, B2B King, WooCommerce Wholesale Prices и аналоги. Они добавляют роли, группы покупателей и правила цен. И вот на стыке этих правил и начинаются проблемы.
- Оптовая цена видна всем, включая розницу, — настройки ролей не сработали.
- Скидка считается от старой цены, и после обновления прайса суммы не сходятся.
- Минимальная партия действует в каталоге, но не проверяется при оформлении заказа.
- Налог показывается по-разному для розницы и опта, и итог в корзине неожиданный.
- Оптовик видит розничную цену, пока не войдёт, и уходит, не разобравшись.
Каждый пункт выглядит мелочью, но вместе они создают ощущение, что сайт «не для бизнеса». А оптовый клиент как раз приходит за понятностью: ему нужно быстро увидеть свою цену и оформить заказ.
Кэш, который показывает чужие цены
Самая коварная проблема. Полностраничный кэш ускоряет сайт, но он не различает, кто именно открыл страницу. Если оптовик первым загрузил карточку товара, розничный покупатель может увидеть его цену — и наоборот. На тестовом сайте с одним посетителем это не проявляется, а на живом всплывает в первый же день.
Решение зависит от плагина и хостинга: либо исключить страницы с динамическими ценами из общего кэша, либо настроить кэш с учётом роли, либо использовать отдельные фрагменты. Главное — проверить это специально: зайдите как оптовик, откройте товар, затем в режиме инкогнито зайдите как розница и сравните. Если цены перепутались, кэш нужно настраивать, а не отключать навсегда.
Регистрация и подтверждение
Оптовику нужно как-то доказать, что он оптовик. Обычно это регистрация с полями компании, ИНН и контактов, после которой менеджер вручную подтверждает статус. Автоматически пускать всех подряд опасно: под видом опта легко получить розничную скидку.
Продумайте путь: что человек видит до регистрации, что после, сколько ждёт подтверждения и как узнаёт о нём. Хорошо, если до входа он видит хотя бы наличие и артикулы, а цены — после. И обязательно письмо с понятным следующим шагом, а не молчание на несколько дней.
Что видит поисковик
Если цены скрыты от незалогиненных, поисковик тоже их не увидит. Для розничных страниц это нормально, а для оптовых разделов может быть проблемой: страницы без цен хуже попадают в расширенные результаты. Здесь нет универсального ответа — иногда лучше показать диапазон «от», иногда оставить «цена по запросу», а иногда закрыть раздел от индексации и вести трафик через рекламу.
Отдельно проверьте, что скрытые цены не создают дубли: одна и та же карточка не должна открываться по нескольким адресам с разными условиями. И что оптовые страницы не конфликтуют с розничными по одним и тем же ключевым запросам.
Минимальная проверка перед запуском
Пройдите путь двумя разными пользователями — розничным и оптовым — от главной до оформленного заказа. Сравните цены, наличие и итоговую сумму. Затем выйдите и зайдите снова в другом браузере: цены не должны перепутаться. Проверьте, что минимальная партия и скидки считаются правильно, а подтверждение оптового статуса приходит вовремя.
И посмотрите на это глазами покупателя: понятно ли, почему у него такая цена, где посмотреть условия и что делать, если он ещё не подтверждён. Часто именно эта ясность, а не размер скидки, решает, вернётся он или нет.
Что в итоге
Оптовые цены в WooCommerce — это не одна настройка, а связка: роли, правила цен, кэш, регистрация и то, как всё это видят разные люди. Если проверить связку до запуска, магазин не будет путать розницу с оптом и не потеряет клиентов на первом же экране. Если нет — первые недели уйдут на разбор жалоб вместо продаж.
Мы настраиваем такие каталоги регулярно и обычно начинаем с вопроса: кто ваши покупатели и как они отличаются. Дальше собираем схему ролей и цен, проверяем кэш и путь оформления, чтобы каждый видел свою цену и не сомневался в ней. Напишите или оставьте заявку — разберём ваш случай и предложим схему, которую не придётся переделывать, когда ассортимент вырастет.
