Как добавить города и области России в зоны доставки для интернет магазина на WordPress и WooCommerce

  Автор:
  14 комментариев
  22947
Как добавить города и области России в зоны доставки

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:
Надежный проверенный годами хостинг для сайта на WordPress
а также, хостинг Beget:
Хостинг Beget

Как добавить города и области России в зоны доставки для интернет магазина на WordPress и WooCommerce

   8 голосов
Средняя оценка: 5 из 5
Если Вам понравилась статья и Вы нашли её полезной, поделитесь ею в соцсетях! Нажмите на кнопки ниже, чтобы сделать это прямо сейчас.

Анфиса Бреус

Анфиса Бреус - специалист по Wordpress с 2007 года. Создатель и разработчик шаблона "AB-Inspiration" для самостоятельной и профессиональной настройки сайтов на WordPress для бизнеса. Основатель клуба "Мастер WordPress" и автор эксклюзивных курсов по WordPress. Фрилансер. Спикер.

Оставьте свой комментарий:

Комментарии на Блог
14 комментариев
  1. Анфиса как всегда с заботой о партнерах развивает новое не только сама, но и нас мотивирует к развитию

  2. Спасибо большое, всё получилось! А то прям засада какая то была…)))

  3. Станислав

    У Вас не указана закрывающая скобка в конце кода
    }
    А за код спасибо, помог.
    Могу посоветовать прописывать код в отдельном плагине. Чтобы при обновлении все не слетало, инфа тут https://github.com/woocommerce/theme-customisations
    Всем успехов в сайтостроении.

  4. Константин

    Здравствуйте!
    Подскажите пожалуйста:
    Нужно к каждой области добавить несколько методов доставки(Почта, самовывоз и т.д.)
    В Корзине есть выбор страны и области А чекбокса метода доставки нет.
    Я добавил зону доставки для каждого региона, но цена в «Сумме заказа»не меняется.
    Как я могу прописать инивидуальную цену для каждого способа доставки в каждый из регионов?. В Поле при рассчете стоимости доставки На выбор мне дают не зоны, а прописанные мною регионы. Как это исправить?
    Очень надеюсь на Вашу помощь.

  5. Михаил

    Добрый день .
    Код работает ,но только в браузере Хроме

    • Михаил, этого не может быть, поскольку код PHP обрабатывается сервером, а не браузером. Попробуйте почистить кэш других браузеров, возможно у вас сохранилась копия файла без вставленного кода.

  6. Виктор

    Спасибо за код!
    Вопрос: Регионы появились, но почему-то при оформлении заказа у региона, хоть и выбран, нет связи с установленными методами доставки.
    Например:
    — в настройках установлена бесплатная доставка для СПБ при заказе выше 2000 и для России — 4000 р.
    — для «России» работает, а для добавлнного через код региона «Санкт-Петербург» — нет.
    Кто-то сталкивался с таким?

    • Нужно смотреть. Еще важно добавлять методы доставки от меньшего к большему. т.е. сначала метод СПБ потом Россия. Если Россия перед СПБ то СПБ срабатывать не будет.

    • Наталья

      Здравствуйте! Виктор, как решили вопрос? У меня сейчас такая же проблема

  7. Данил

    Огромное вам спасибо .

  8. so_far

    Я попробовала добавить этот фильтр в functions.php — но все сломалось, белый экран. и вышло сообщение о неверном синтаксисе в 1 строке. Что я сделала не так?

  9. Здравствуйте. Ваша статья одна из первых в выдаче яндекса.
    Однако данный список отображается только в админке в настройке зон доставки.
    Не понятно, как этот список регионов (который мы добавили) вывести в корзину, чтобы клиент при заказе выбрал свой регион. У меня при добавлении этого кода в настройках зон доставки регионы появились, а в корзине по-прежнему отображается список стран.

  10. Максим

    Спасибо Владимиру за замечание, жаль, что на самом интересном месте ответы закончились.

Ваш адрес email не будет опубликован. Обязательные поля помечены *