WP Product Manager
Плагин WordPress, назначающий цены каталогу WooCommerce по вышестоящему магазину. Сбор цен в нескольких валютах, подключаемая стратегия выбора цены, кэш на транзиентах, чтобы карточка не ждала внешний вызов, и кастомные поля, идущие от формы товара до готового заказа.

Стек
Проблема
Магазин, перепродающий консольные игры, назначал цены десяткам тысяч позиций, ориентируясь на вышестоящий магазин, который постоянно меняет свои цены: распродажи начинаются и заканчиваются без предупреждения, а одна и та же игра стоит по-разному в каждом региональном сторе. Цены на витрине из-за этого были либо устаревшими, либо неверными: ручной проход по каталогу занимал дни и устаревал раньше, чем заканчивался.
Наивное решение - спрашивать цену у вышестоящего магазина при каждой загрузке страницы - ещё хуже. Страница каталога с тридцатью товарами превращается в тридцать исходящих запросов, загрузка рушится, а один медленный ответ источника утаскивает магазин за собой.
До → После
| До | После |
|---|---|
| Цены правятся вручную и отстают от источника на дни | Цены тянутся из вышестоящего магазина и обновляются сами |
| Цена одного региона применяется ко всему | Собираются и сравниваются все доступные региональные цены |
| Какую цену ставить - решение человека по каждому товару | Стратегия ценообразования, выбранная один раз на весь каталог |
| Запросы на лету при загрузке: медленные страницы, чужие сбои видны покупателю | Кэш цен с коротким сроком жизни: страница товара не ждёт внешний вызов |
| В заказе нет полей, которые реально нужны на выдаче | Кастомные поля проходят через форму товара, корзину, оформление и заказ |
| Смена правила ценообразования - правка кода | Стратегии заменяются за одним интерфейсом |
Как это работает
- Цены собираются по регионам. По каждому товару плагин запрашивает у вышестоящего магазина цену в каждой настроенной валюте, а не доверяет одному сторефронту.
- Стратегия выбирает одну. Выбор вынесен в подключаемый компонент за единым интерфейсом; поставляемая реализация берёт минимальную легитимную региональную цену. Подмена правила - фиксированный регион, наценка к медиане - не задевает остальной плагин.
- Результат кэшируется. Выбранная цена пишется в транзиент с коротким сроком жизни. Каталог и карточки читают кэш, поэтому отрисовка страницы никогда не блокируется внешним вызовом, а сбой источника не становится сбоем магазина.
- Кастомные поля едут вместе с заказом. Дополнительные поля, от которых зависит выдача, подставляются в форму редактирования товара, корзину, оформление и готовый заказ - данные, нужные оператору, прикреплены к заказу, а не восстанавливаются потом.
- Каталог остаётся актуальным. Обновление идёт по расписанию по всему каталогу - именно это держит магазин такого размера в такт с источником, который меняется ежедневно.
Основные возможности
- Получение цен в нескольких валютах из вышестоящего магазина
- Подключаемая стратегия ценообразования - по умолчанию минимальная региональная цена
- Кэш цен на транзиентах с настраиваемым сроком жизни
- Кастомные поля в форме товара, корзине, оформлении и заказе
- Обновление всего каталога по расписанию
- Типизированные DTO на каждый ответ источника - изменение формата падает громко
Установка
- Загрузите папку плагина в
/wp-content/plugins/и активируйте - Пропишите доступы к API источника и список валют для запроса
- Выберите стратегию ценообразования и задайте срок жизни кэша
- Прогоните первое обновление каталога вручную, чтобы наполнить кэш
- Поставьте регулярное обновление с тем интервалом, который оправдан источником
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок