Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/fedirina/woo-city-select/archive/refs/heads/main.zipПлагин выбора населённого пункта для WordPress / WooCommerce.
Посетитель указывает город доставки сам. Выбор хранится в cookie около года и может подставляться в адрес доставки WooCommerce. Также может использоваться при запросе стоимости доставки на любой странице сайта. Сам запрос стоимости доставки для разных служб доставки плагин не выполняет.
Что умеет плагин:
- выводить кнопку текущего города и модалку со списком крупных городов и поиском;
- добавляет отдельную страницу в настройки в WooCommerce: список городов в модалке и API-ключ DaData;
- при оформлении заказа заполняет пустые поля города и региона.
Куда можно поставить блок
- В шаблоне темы:
Woo_City_Select_Render::render_trigger()(например, в шапке). - Шорткодом
[woo_city_select]в тексте страницы или записи.
Стили, скрипт и разметка модалки грузятся только там, где блок выведен. На остальных страницах лишнего нет.
Поведение
Город по IP или геолокации не определяется. Пока посетитель не выбрал другой пункт, в качестве текущего города выводится Москва.
Названия пользователь не набирает полностью вручную: и на витрине, и в админке пункт выбирают из подсказок DaData. В подсказках только населенные пункты с регионами.
В cookie уходят и название, и регион, чтобы было возможщно разлчить одноимённые населённые пункты в разных регионах. В шапке видно только город, регион — в подсказках при выборе.
Как устроен код
Классы без глобальных функций, один файл — один класс. WooCommerce не обязателен для блока на витрине; настройки и checkout — только если WC активен. Модалка на нативном <dialog>, без Bootstrap. Cookie читается на сервере, поэтому город сразу доступен в PHP при оформлении заказа.