← Назад к решениям
ПлагинPHPПлатно

WP Product Manager

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

WP Product Manager

Стек

PHPWordPressWooCommerceMySQLREST API

Проблема

Магазин, перепродающий консольные игры, назначал цены десяткам тысяч позиций, ориентируясь на вышестоящий магазин, который постоянно меняет свои цены: распродажи начинаются и заканчиваются без предупреждения, а одна и та же игра стоит по-разному в каждом региональном сторе. Цены на витрине из-за этого были либо устаревшими, либо неверными: ручной проход по каталогу занимал дни и устаревал раньше, чем заканчивался.

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

До → После

ДоПосле
Цены правятся вручную и отстают от источника на дниЦены тянутся из вышестоящего магазина и обновляются сами
Цена одного региона применяется ко всемуСобираются и сравниваются все доступные региональные цены
Какую цену ставить - решение человека по каждому товаруСтратегия ценообразования, выбранная один раз на весь каталог
Запросы на лету при загрузке: медленные страницы, чужие сбои видны покупателюКэш цен с коротким сроком жизни: страница товара не ждёт внешний вызов
В заказе нет полей, которые реально нужны на выдачеКастомные поля проходят через форму товара, корзину, оформление и заказ
Смена правила ценообразования - правка кодаСтратегии заменяются за одним интерфейсом

Как это работает

  1. Цены собираются по регионам. По каждому товару плагин запрашивает у вышестоящего магазина цену в каждой настроенной валюте, а не доверяет одному сторефронту.
  2. Стратегия выбирает одну. Выбор вынесен в подключаемый компонент за единым интерфейсом; поставляемая реализация берёт минимальную легитимную региональную цену. Подмена правила - фиксированный регион, наценка к медиане - не задевает остальной плагин.
  3. Результат кэшируется. Выбранная цена пишется в транзиент с коротким сроком жизни. Каталог и карточки читают кэш, поэтому отрисовка страницы никогда не блокируется внешним вызовом, а сбой источника не становится сбоем магазина.
  4. Кастомные поля едут вместе с заказом. Дополнительные поля, от которых зависит выдача, подставляются в форму редактирования товара, корзину, оформление и готовый заказ - данные, нужные оператору, прикреплены к заказу, а не восстанавливаются потом.
  5. Каталог остаётся актуальным. Обновление идёт по расписанию по всему каталогу - именно это держит магазин такого размера в такт с источником, который меняется ежедневно.

Основные возможности

  • Получение цен в нескольких валютах из вышестоящего магазина
  • Подключаемая стратегия ценообразования - по умолчанию минимальная региональная цена
  • Кэш цен на транзиентах с настраиваемым сроком жизни
  • Кастомные поля в форме товара, корзине, оформлении и заказе
  • Обновление всего каталога по расписанию
  • Типизированные DTO на каждый ответ источника - изменение формата падает громко

Установка

  1. Загрузите папку плагина в /wp-content/plugins/ и активируйте
  2. Пропишите доступы к API источника и список валют для запроса
  3. Выберите стратегию ценообразования и задайте срок жизни кэша
  4. Прогоните первое обновление каталога вручную, чтобы наполнить кэш
  5. Поставьте регулярное обновление с тем интервалом, который оправдан источником

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок