Один каталог WooCommerce, продающийся в нескольких городах по разным ценам. Это расширение добавляет регион как измерение магазина, а не как его вторую копию, и публикуется как открытый исходный код под лицензией GPL-3.0.
Источник, выпуски и релизы: github.com/kostyasorokin/wc-regional-catalog
Проблема, которую оно решает
Обычно для решения проблемы регионального ценообразования дублируют товар, по одному разу для каждого города. В результате каталог разрастается в несколько раз по отношению к количеству городов, каждое изменение приходится вносить столько же раз, и два экземпляра расходятся в течение месяца.
Здесь регион представляет собой таксономию продукта, а региональная цена — это значение, указанное рядом с ней. Один продукт, одно описание, одна цена на складе — и цена, которая зависит от того, откуда посетитель просматривает товар.
Как определяется регион
Пересмотр правил поставил город на путь... /shop/kharkiv/product-name/ — а постоянные ссылки на товары переписываются таким образом, чтобы оставаться внутри них. Таким образом, URL-адрес представляет собой полную инструкцию: он указывает, что именно просматривается и откуда, что и делает региональную страницу индексируемой.
Если адрес указывает регион, он имеет приоритет. В противном случае, последний выбранный вариант хранится в cookie-файле, поэтому посетитель, перешедший со страницы города, сохраняет его при просмотре остальной части магазина.
Откуда берется цена
Региональная цена применяется через собственные фильтры цен WooCommerce, а не путем перезаписи товара. Поскольку все последующие этапы считывают цену через те же фильтры, корзина и оформление заказа следуют за ней, не зная о существовании расширения.
Фильтрация каталога осуществляется с помощью таксономического запроса, а не мета-запроса. Это различие перестает иметь значение при наличии нескольких сотен товаров и начинает иметь критически важное значение при наличии нескольких тысяч, именно для такого количества товаров и был написан этот код.
Подача и переключение
Each region can emit its own Google Merchant RSS feed, so a shopping campaign can be aimed at one city without a second store behind it. A product that carries no price for the region asked for falls back to its ordinary one, which is worth knowing before pointing a budget at the feed.
Шорткод отображает переключатель регионов там, где это необходимо для темы оформления. На лицевой стороне сайта ничего больше не добавляется — расширение не подключает ни скрипты, ни таблицы стилей, а создаваемая им страница весит ровно столько же, сколько весила страница, созданная в теме оформления.
Роли
Разработчик
Konstantin Sorokin
Выполнено
- Архитектура плагинов и разработка на PHP.
- Региональная таксономия и ценообразование по регионам
- Правила перезаписи и региональные постоянные ссылки на продукты
- RSS-лента Google Merchant по регионам
- короткий код переключения регионов
- Документация и выпуск с открытым исходным кодом.