Запрос «сделайте нам каталог товаров на сайте» приходит в агентство почти каждую неделю. Примерно в половине случаев за ним стоит интернет-магазин, который клиент по привычке называет каталогом. В другой половине происходит обратное: человек просит магазин, а бизнесу нужен каталог, потому что сделка всё равно проходит через менеджера, счёт и договор, и корзина в этой цепочке ничего не решает.
Разница между двумя вариантами лежит не в дизайне карточки товара. Она в том, где сайт передаёт клиента живому человеку. У магазина эта точка называется «Оформить заказ». У сайта-каталога без магазина это заявка, звонок или письмо менеджеру. От ответа на такой вопрос зависят и стек, и бюджет, и то, во сколько сайт обойдётся в поддержке за следующие три года.
Что означает «каталог товаров WordPress» на практике
Каталог представляет собой структурированный справочник продукции с категориями, фильтрами, характеристиками и карточками, но без корзины, оплаты и статусов заказа. Посетитель находит нужную позицию, сравнивает параметры, скачивает спецификацию и оставляет заявку. Дальше подключается отдел продаж.
Интернет-магазин добавляет к витрине платёжный контур: корзину, расчёт доставки, налоги, онлайн-оплату, личный кабинет покупателя, статусы заказа, возвраты. WooCommerce остаётся самым распространённым способом получить всё это на WordPress. У плагина более семи миллионов активных установок, ядро бесплатное, из коробки идут корзина и оформление заказа, поддержка более сотни платёжных шлюзов, настройки доставки и налогов.
Платёжный контур не является бесплатным приложением к витрине. Он требует внимания: обновлений плагинов, тестовых оплат после каждого крупного релиза, сверки остатков, работы с брошенными корзинами, мониторинга ошибок шлюза. Если продажи по факту идут по счёту на юридическое лицо, компания платит за механизм, которым не пользуется.
Пять ситуаций, когда сайт-каталог без магазина закрывает задачу
Первая ситуация: цена индивидуальная и зависит от объёма. В B2B прайс редко бывает публичным. Стоимость меняется в зависимости от партии, условий отсрочки, статуса контрагента, логистики. Выставить в карточке одну цифру означает либо потерять маржу на крупных клиентах, либо отпугнуть мелких. Каталог решает это честно: характеристики видны всем, цену считает менеджер.
Вторая: товар требует подбора. Промышленное оборудование, насосы, компрессоры, станки, вентиляция, кабельная продукция. Здесь клиент почти никогда не знает точный артикул, он знает задачу. Корзина в такой логике бесполезна, потому что продажа начинается с вопроса «что у вас за объект».
Третья: компания производит, но не продаёт в розницу. Заводы и дистрибьюторы часто держат сайт как витрину для дилеров и закупщиков. Онлайн-оплата им противопоказана, она ломает дилерскую сетку и злит партнёров, которые продают тот же товар на своей территории.
Четвёртая: продажа неотделима от услуги. Окна, лифты, климатические системы, мебель на заказ, промышленные полы. Товар без замера, монтажа или проекта тут просто не существует. Оформить такое через корзину нельзя, а заявка на расчёт работает.
Пятая: ассортимент обновляется чаще, чем цены. У некоторых поставщиков позиции появляются и исчезают еженедельно, а прайс пересматривается раз в квартал. Поддерживать в актуальном состоянии магазин с остатками в такой ситуации дороже, чем вести каталог, где цена вообще не хранится.
Три способа собрать каталог товаров на WordPress
Технически задача решается минимум тремя путями, и они сильно отличаются по стоимости владения.
Собственный тип записи и таксономии
WordPress изначально умеет хранить не только посты и страницы. Функция register_post_type() создаёт отдельный тип записи, например «Продукция», со своим разделом в админке, своим архивом и своим адресом. Регистрировать её документация рекомендует на хуке init. Идентификатор типа записи не должен превышать 20 символов, а префикс wp_ зарезервирован ядром.
Категории каталога заводятся через register_taxonomy(), тоже на init. Аргумент hierarchical определяет поведение: при значении true таксономия работает как рубрики, с родительскими и дочерними уровнями, при false как метки, плоским списком. Для дерева каталога нужен первый вариант. Для сквозных свойств вроде «нержавеющая сталь» или «взрывозащищённое исполнение» удобнее второй.
Характеристики хранятся в кастомных полях. Здесь чаще всего берут Advanced Custom Fields: у плагина более двух миллионов активных установок, базовая версия бесплатна и даёт свыше тридцати типов полей, а платная добавляет повторители и гибкий контент. Последние нужны, когда у позиции переменное число модификаций.
Такой каталог не тянет за собой ни одной лишней сущности. В базе нет заказов, в админке нет разделов оплаты, обновлять нечего, кроме самого WordPress и двух-трёх плагинов. Минус в том, что работу нужно проектировать и писать, готовой кнопки «включить каталог» не существует.
WooCommerce с отключёнными покупками
Второй путь: поставить WooCommerce и выключить в нём торговлю. Официальное расширение WooCommerce для этого называется Catalog Visibility Options, оно платное и не входит в ядро. Расширение добавляет раздел настроек WooCommerce → Settings → Visibility Options с параметрами «Purchases» и «Prices», каждый из которых переключается между «включено», «выключено» и «включено для авторизованных пользователей». Отдельно задаётся текст, который встаёт на место кнопки покупки, и альтернативный контент на странице товара.
Бесплатные альтернативы в репозитории тоже есть, например Product Catalog Mode For WooCommerce, который скрывает цены и кнопку добавления в корзину. Но у него порядка двухсот активных установок, и для проекта, который должен жить годами, это существенный риск: плагин с такой аудиторией может перестать обновляться в любой момент.
Готовая тема с каталожным функционалом
Третий вариант: купить тему, в которой каталог уже собран. Это самый быстрый старт и самая тяжёлая поддержка. Такие темы обычно тащат за собой конструктор страниц, собственный набор виджетов и жёсткую структуру данных. Через два года выясняется, что вынести каталог из темы невозможно, потому что товары хранятся в её внутреннем формате, а редизайн означает переписывание всего контента.
Почему «WooCommerce с выключенной корзиной» экономит не всегда
Соблазн понятен: WooCommerce бесплатен, у него готовая админка товаров, атрибуты, вариации, галереи, импорт из CSV. Кажется, что достаточно выключить лишнее и получить каталог за половину бюджета.
На практике вместе с админкой в проект приезжает вся остальная инфраструктура. WooCommerce создаёт свои таблицы, свои плановые задачи, свои страницы корзины и оформления заказа, свои эндпойнты. Всё это продолжает существовать и обновляться, даже если торговля выключена. Каждый мажорный релиз плагина нужно проверять, и не потому, что сломается оплата, которой нет, а потому что может измениться вёрстка карточки или поведение фильтров.
Добавьте сюда расширение для режима каталога, которое тоже нужно обновлять и которое должно оставаться совместимым с WooCommerce. Получается конструкция из двух связанных зависимостей ради того, чтобы не показывать кнопку.
Есть и обратная ситуация, когда WooCommerce оправдан. Если через год-полтора компания планирует включить онлайн-продажи хотя бы для части ассортимента, строить каталог на нём разумно: данные уже лежат в правильной структуре, включение торговли сводится к настройке. Мы в разработке сайтов под ключ спрашиваем об этом на старте, до выбора стека. Переезд с кастомного типа записи на WooCommerce через год стоит дороже, чем изначально заложенный запас.
Как каталог превращается в заявки
Каталог без продуманного перехода к разговору остаётся просто справочником. Посетитель посмотрит характеристики и уйдёт сравнивать дальше. Несколько вещей повышают конверсию заметнее, чем дизайн карточки.
Форма на карточке товара должна уходить менеджеру с подставленным артикулом, а не с абстрактным «интересует ваша продукция». Это экономит один круг переписки и убирает главную причину потери лида: паузу на уточнение.
Скачиваемая спецификация в промышленных нишах работает как инструмент, а не как украшение. Закупщик собирает PDF-файлы для внутреннего согласования, и кнопка загрузки паспорта или технического листа ему нужна. Можно отдавать файл в обмен на контакты, но осторожно: часть аудитории просто уйдёт к конкуренту, у которого файл лежит открыто.
Сравнение позиций окупается там, где в линейке восемь моделей, отличающихся тремя параметрами. Таблица сравнения экономит клиенту полчаса и удерживает его на сайте.
Заявки должны попадать в CRM автоматически. Форма, которая шлёт письмо на общий ящик, работает ровно до первого отпуска ответственного. Связка сайта с CRM превращает каталог из витрины в источник управляемого потока обращений, где у каждого обращения есть ответственный, срок реакции и история.
Отдельно стоит продумать сценарий для тех, кто ничего не нашёл. В каталоге из трёхсот позиций часть посетителей уходит с пустой выдачей фильтра. Страницу «ничего не найдено» лучше отдать под форму подбора: клиент описывает задачу своими словами, менеджер предлагает аналог. По нашим наблюдениям такие обращения конвертируются в сделку не хуже заявок с конкретной карточки, потому что человек уже потратил время на поиск и настроен разговаривать.
Пример расчёта: каталог промышленного оборудования
Возьмём условный проект, цифры в котором взяты как иллюстрация, а не как прайс. Поставщик оборудования с ассортиментом около 340 позиций, шесть товарных групп, у каждой позиции от 12 до 20 характеристик, цена всегда договорная.
Вариант на WooCommerce: сам плагин, расширение режима каталога, плагин фильтров, плагин форм, интеграция с CRM. Пять зависимостей, каждая со своим циклом обновлений и своей вероятностью конфликта. Тестировать после обновлений нужно всё вместе.
Вариант на собственном типе записи: WordPress, ACF, плагин форм, интеграция с CRM. Три зависимости, фильтры пишутся под конкретный набор характеристик и работают на запросах к таксономиям без промежуточных слоёв.
Разработка второго варианта обходится дороже на старте, примерно на треть, потому что каталог, фильтры и шаблоны карточек делаются руками. Дальше кривая расходов расходится в другую сторону: обновлять и тестировать нужно меньше, а любая доработка не упирается в чужую архитектуру. На горизонте двух-трёх лет разница по совокупной стоимости обычно оказывается в пользу собственного решения, на горизонте полугода в пользу WooCommerce. Поэтому вопрос о планах на онлайн-продажи мы задаём раньше вопроса о дизайне.
SEO у каталога: где он сильнее магазина и где слабее
Каталог без цен проигрывает магазину в одном заметном месте, в расширенных сниппетах. Google описывает требования к разметке Product так: обязательно свойство name, плюс одно из трёх, offers, review или aggregateRating. Товарные расширенные результаты поддерживают только страницы, посвящённые одному товару или его вариантам, и Google прямо рекомендует размечать карточки товаров, а не страницы категорий и списков.
Отсюда следует простая вещь. Если цены нет, но есть отзывы или рейтинг, карточка всё равно может претендовать на расширенный сниппет. Если нет ни того ни другого, разметка Product на странице категории проблему не решит, потому что для листингов Google её не использует.
Зато у каталога есть козырь, которого часто нет у магазина: содержательный текст. Магазины десятками тысяч штампуют однотипные карточки с описанием от поставщика. Каталог, где под каждой группой товаров лежит нормальный технический разбор, как выбрать, чем модели отличаются, какие ошибки допускают при подборе, собирает информационный трафик, который у магазина уходит в блог.
Условие здесь техническое: категории и фильтры должны давать чистые адреса без бесконечных комбинаций параметров в запросе. Фильтр, который генерирует тысячи адресов с одинаковым содержимым, съедает краулинговый бюджет и растворяет вес страниц. Индексируемыми оставляют только те комбинации, под которые есть реальный спрос, обычно это связка «категория плюс один значимый параметр».
Что чаще всего ломается в чужих каталогах
К нам регулярно приходят сайты, сделанные другими подрядчиками, и набор проблем повторяется от проекта к проекту.
Характеристики в одном текстовом поле остаются самой частой и самой дорогой ошибкой. Разработчик экономит время и складывает все параметры в поле «Описание» одним куском. Внешне карточка выглядит нормально. Но по такому полю нельзя построить ни фильтр, ни сортировку, ни сравнение, ни выгрузку. Чтобы добавить фильтр по мощности, придётся разбирать текст 340 карточек вручную. Правильно делать иначе: отдельное поле под каждый параметр, с типом данных и единицей измерения.
Категории, сделанные обычными страницами, ведут себя похоже. Иногда дерево каталога собирают из страниц с вручную проставленными ссылками. Пока групп пять, это работает. На двадцати начинается ад: добавление товара требует правки нескольких страниц, а любая перестановка ломает навигацию. Категории должны быть таксономией, тогда связь товара и раздела поддерживается системой, а не человеком.
Товары внутри конструктора страниц лишают проект единого шаблона. Когда каждая карточка собрана блоками визуального редактора, изменить оформление всех карточек разом невозможно, только по одной. Такой каталог нельзя ни выгрузить, ни синхронизировать с учётной системой.
Фильтр, который перезагружает страницу целиком, технически ошибкой не является. Но на каталоге из нескольких сотен позиций каждое переключение чекбокса стоит посетителю секунды ожидания. Обычно достаточно заменить полную перезагрузку на обновление только списка результатов.
Отсутствие изображений в нужных размерах бьёт по мобильным. Если в каталог загружены исходники по три мегабайта и отдаются они же, страница категории с тридцатью позициями весит десятки мегабайт. Посетитель со смартфона до фильтров не доходит.
Все пять проблем чинятся, но стоимость исправления обычно сопоставима с разработкой каталога заново, потому что чинить приходится не код, а структуру данных вместе с содержимым.
Что заложить в техническое задание
Разница между каталогом, который живёт пять лет, и каталогом, который переделывают через год, обычно закладывается на этапе ТЗ.
Опишите структуру данных до дизайна: какие группы товаров, какие характеристики у каждой группы, какие из них общие, какие уникальные, какие участвуют в фильтрах. Без этой таблицы разработчик угадывает, а угадывает он редко удачно.
Зафиксируйте источник данных. Если ассортимент ведётся в 1С или в Excel, синхронизация должна быть в ТЗ с самого начала. Дописать её к готовому сайту дороже, чем спроектировать сразу.
Продумайте, что происходит с позицией, которая снята с производства. Удалять её нельзя: адрес уже проиндексирован и может приводить трафик. Правильнее оставить карточку со статусом и ссылками на аналоги.
Заранее решите, кто и как наполняет каталог. Если контентом занимается менеджер без технической подготовки, интерфейс добавления товара должен быть простым, а не набором произвольных блоков конструктора.
И проверьте мобильную версию фильтров отдельно от всего остального. В B2B доля мобильного трафика ниже, чем в рознице, но она не нулевая, а фильтр с двадцатью параметрами на экране смартфона остаётся типичным местом, где посетитель закрывает вкладку.
Частые вопросы
Можно ли позже превратить каталог в интернет-магазин?
Да, но стоимость перехода зависит от того, как каталог устроен. Если товары лежат в собственном типе записи, их придётся переносить в структуру WooCommerce со сверкой адресов и настройкой переадресаций. Если каталог изначально собран на WooCommerce с отключёнными покупками, включение торговли сводится к настройке платежей и доставки. Именно поэтому планы на онлайн-продажи стоит обсуждать до выбора стека.
Обязательно ли показывать цены в каталоге?
Нет. В B2B скрытая цена считается нормой, и заявка на расчёт воспринимается спокойно. Стоит только заменить пустоту в карточке на понятное действие: «Запросить стоимость», «Получить прайс», «Рассчитать под объём». Пустое место без объяснения читается как недоделанный сайт.
Сколько позиций выдержит каталог на WordPress?
Несколько тысяч позиций WordPress держит без специальных ухищрений при нормальном хостинге и кэшировании. Проблемы начинаются не от количества товаров, а от тяжёлых фильтров, которые на каждый запрос перебирают все характеристики. Если ассортимент измеряется десятками тысяч позиций, поиск и фильтрацию обычно выносят в отдельный движок.
Что лучше для каталога: WooCommerce или собственный тип записи?
Если онлайн-продажи планируются в обозримом будущем, берите WooCommerce. Если продажа принципиально идёт через менеджера и счёт, выигрывает собственный тип записи: меньше зависимостей, меньше обновлений, полный контроль над структурой характеристик.
Как каталог связать с CRM?
Через формы заявок. Каждая форма на карточке товара передаёт в CRM контакт и артикул позиции, система создаёт сделку и назначает ответственного. Настройка занимает немного времени, а эффект заметен сразу: заявки перестают теряться в почте и получают измеримый срок реакции.
