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

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

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. Фрилансер. Спикер.

Подпишись на меня в Telegram! Только важные новости и лучшие статьи
Оставьте свой комментарий:

Комментарии на Блог
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 не будет опубликован. Обязательные поля помечены *