Woocommerce отличный плагин для создания интернет магазина, но поскольку он заточен под западный рынок, и не очень развит в рунете, приходится кое-что дорабатывать.
Такой, например, доработкой будет внесение списка городов и областей для создания зон доставки.
По умолчанию в Woocommerce можно создать зону доставки «Россия»,
но Россия очень большая и стоимость доставки будет значительно отличатся, скажем в Москву и Владивосток.
Чтобы более точно указывать назначение доставки можно воспользоваться индексами. Но здесь есть 2 проблемы:
1. не каждый покупатель точно знает свой индекс.
2. индексов так много, что уйдет огромное количество времени, чтобы задать их в настройках и разбить по зонам доставки
В общем есть более простое решение. Внести список городов и областей в Woocommerce, как у них сделано для США по умолчанию.
Сделать это просто! В файл шаблона functions.php вставить следующий код:
add_filter( 'woocommerce_states', 'new_rus_woocommerce_states' ); function new_rus_woocommerce_states( $states ) { $states['RU'] = array( 'MSK' => 'Москва', 'SPB' => 'Санкт-Петербург', 'NOV' => 'Новосибирск', 'EKB' => 'Екатеринбург', 'NN' => 'Нижний Новгород', 'KZN' => 'Казань', 'CHL' => 'Челябинск', 'OMSK' => 'Омск', 'SMR' => 'Самара', 'RND' => 'Ростов-на-Дону', 'UFA' => 'Уфа', 'PRM' => 'Пермь', 'KRN' => 'Красноярск', 'VRZH' => 'Воронеж', 'VLG' => 'Волгоград', 'SIMF' => 'Симферополь', 'ABAO' => 'Агинский Бурятский авт.окр.', 'AR' => 'Адыгея Республика', 'ALR' => 'Алтай Республика', 'AK' => 'Алтайский край', 'AMO' => 'Амурская область', 'ARO' => 'Архангельская область', 'ACO' => 'Астраханская область', 'BR' => 'Башкортостан республика', 'BEO' => 'Белгородская область', 'BRO' => 'Брянская область', 'BUR' => 'Бурятия республика', 'VLO' => 'Владимирская область', 'VOO' => 'Волгоградская область', 'VOLGO' => 'Вологодская область', 'VORO' => 'Воронежская область', 'DR' => 'Дагестан республика', 'EVRAO' => 'Еврейская авт. область', 'IO' => 'Ивановская область', 'IR' => 'Ингушетия республика', 'IRO' => 'Иркутская область', 'KBR' => 'Кабардино-Балкарская республика', 'KNO' => 'Калининградская область', 'KMR' => 'Калмыкия республика', 'KLO' => 'Калужская область', 'KMO' => 'Камчатская область', 'KCHR' => 'Карачаево-Черкесская республика', 'KR' => 'Карелия республика', 'KEMO' => 'Кемеровская область', 'KIRO' => 'Кировская область', 'KOMI' => 'Коми республика', 'KPAO' => 'Коми-Пермяцкий авт. окр.', 'KRAO' => 'Корякский авт.окр.', 'KOSO' => 'Костромская область', 'KRSO' => 'Краснодарский край', 'KRNO' => 'Красноярский край', 'KRYM' => 'Крым Республика', 'KURGO' => 'Курганская область', 'KURO' => 'Курская область', 'LENO' => 'Ленинградская область', 'LPO' => 'Липецкая область', 'MAGO' => 'Магаданская область', 'MER' => 'Марий Эл республика', 'MOR' => 'Мордовия республика', 'MSKO' => 'Московская область', 'MURO' => 'Мурманская область', 'NAO' => 'Ненецкий авт.окр.', 'NZHO' => 'Нижегородская область', 'NVGO' => 'Новгородская область', 'NVO' => 'Новосибирская область', 'OMO' => 'Омская область', 'OPENO' => 'Оренбургская область', 'OPLO' => 'Орловская область', 'PENO' => 'Пензенская область', 'PERO' => 'Пермский край', 'PRO' => 'Приморский край', 'PSO' => 'Псковская область', 'RSO' => 'Ростовская область', 'RZO' => 'Рязанская область', 'SMRO' => 'Самарская область', 'SRP' => 'Саратовская область', 'SYAR' => 'Саха(Якутия) республика', 'SKHO' => 'Сахалинская область', 'SVO' => 'Свердловская область', 'SOAR' => 'Северная Осетия - Алания республика', 'SMO' => 'Смоленская область', 'STK' => 'Ставропольский край', 'TRAO' => 'Таймырский (Долгано-Ненецкий) авт. окр.', 'TMBO' => 'Тамбовская область', 'TTR' => 'Татарстан республика', 'TVO' => 'Тверская область', 'TMO' => 'Томская область', 'TVR' => 'Тыва республика', 'TULO' => 'Тульская область', 'TUMO' => 'Тюменская область', 'UDO' => 'Удмуртская республика', 'ULO' => 'Ульяновская область', 'UOBAO' => 'Усть-Ордынский Бурятский авт.окр.', 'KHBK' => 'Хабаровский край', 'KHKR' => 'Хакасия республика', 'KHMAO' => 'Ханты-Мансийский авт.окр.', 'CHLO' => 'Челябинская область', 'CHCHR' => 'Чеченская республика', 'CHTO' => 'Читинская область', 'CHVR' => 'Чувашская республика', 'CHKAO' => 'Чукотский авт.окр.', 'EVAO' => 'Эвенкийский авт.окр.', 'YANO' => 'Ямало-Ненецкий авт.окр.', 'YAO' => 'Ярославская область' ); return $states; }
В этом списке указаны все области, округа, и республики, а также в начале указаны несколько городов миллионников. Вы можете сами сформировать такой список, добавить еще города, или даже деревни. Главное, указывайте оригинальный код города (заглавные буквы, латиницей). Например: ‘YAO’ => ‘Ярославская область’ . YAO — это код Ярославской области. Вы его придумываете сами. Главное, чтобы эти коды в списке не повторялись.
После того как вы создали список в файле functions.php у вас появится возможность указывать те города, области, республики для определенной зоны доставки, и соответственно создать необходимые методы доставки для данной зоны.
С вопросами обращайтесь в нашу службу поддержки 24/7
Нужен качественный хостинг для сайта на WordPress?
Рекомендую, проверенные годами, хостинг Timeweb:
а также, хостинг Beget:
Средняя оценка: 5 из 5
Анфиса как всегда с заботой о партнерах развивает новое не только сама, но и нас мотивирует к развитию
Спасибо большое, всё получилось! А то прям засада какая то была…)))
У Вас не указана закрывающая скобка в конце кода
}
А за код спасибо, помог.
Могу посоветовать прописывать код в отдельном плагине. Чтобы при обновлении все не слетало, инфа тут https://github.com/woocommerce/theme-customisations
Всем успехов в сайтостроении.
Станислав, благодарю. Исправила.
Здравствуйте!
Подскажите пожалуйста:
Нужно к каждой области добавить несколько методов доставки(Почта, самовывоз и т.д.)
В Корзине есть выбор страны и области А чекбокса метода доставки нет.
Я добавил зону доставки для каждого региона, но цена в «Сумме заказа»не меняется.
Как я могу прописать инивидуальную цену для каждого способа доставки в каждый из регионов?. В Поле при рассчете стоимости доставки На выбор мне дают не зоны, а прописанные мною регионы. Как это исправить?
Очень надеюсь на Вашу помощь.
Добрый день .
Код работает ,но только в браузере Хроме
Михаил, этого не может быть, поскольку код PHP обрабатывается сервером, а не браузером. Попробуйте почистить кэш других браузеров, возможно у вас сохранилась копия файла без вставленного кода.
Спасибо за код!
Вопрос: Регионы появились, но почему-то при оформлении заказа у региона, хоть и выбран, нет связи с установленными методами доставки.
Например:
— в настройках установлена бесплатная доставка для СПБ при заказе выше 2000 и для России — 4000 р.
— для «России» работает, а для добавлнного через код региона «Санкт-Петербург» — нет.
Кто-то сталкивался с таким?
Нужно смотреть. Еще важно добавлять методы доставки от меньшего к большему. т.е. сначала метод СПБ потом Россия. Если Россия перед СПБ то СПБ срабатывать не будет.
Здравствуйте! Виктор, как решили вопрос? У меня сейчас такая же проблема
Огромное вам спасибо .
Я попробовала добавить этот фильтр в functions.php — но все сломалось, белый экран. и вышло сообщение о неверном синтаксисе в 1 строке. Что я сделала не так?
Здравствуйте. Ваша статья одна из первых в выдаче яндекса.
Однако данный список отображается только в админке в настройке зон доставки.
Не понятно, как этот список регионов (который мы добавили) вывести в корзину, чтобы клиент при заказе выбрал свой регион. У меня при добавлении этого кода в настройках зон доставки регионы появились, а в корзине по-прежнему отображается список стран.
Спасибо Владимиру за замечание, жаль, что на самом интересном месте ответы закончились.