Задача. Необходимо вывести на WordPress-сайте блок в котором будет указан город посетителя с возможностью для него выбора своего или ближайшего населенного пункта. Например, часто можно встретить на сайтах такую фишку «Ваш город: Воронеж» и кликнув на ссылку открывается всплывающее окно, а в нем список городов, которые можно выбрать. Нужен плагин для определения и выбора города посетителя, а в зависимости от локации пользователя должны выводиться различные контактные данные.
Как это можно использовать. Геолокацию (геотаргетинг) можно использовать для показа пользователю определенного контента в зависимости от его локации (города). Например, показывать посетителю разные номера телефонов, адресов, или подставить в контент название города (например, «доставка осуществляется в город [Львов]») в зависимости от его географического местоположения.
Решение. На данный момент, возможно, лучшим бесплатным решением для сайтов ориентированных на Россию, Украину и СНГ будет плагин WT GeoTargeting. Он шорткодом выводит определившийся город. Но выводит только текст (не ссылкой как в примере), т.е. нужно отдельно оформить всплытие модального окна с выбором городов. Также, если перейти по ссылке с параметром вида
?wt_city_by_default=Москва
(например, href="/page-1/?wt_city_by_default=Москва
), то мы перейдем на страницу page-1
, но уже шорткод здесь выведет город «Москва». Таким образом, нам нужно:
- вывести шорт кодом город,
- сделать его в виде активной ссылки,
- привязать к нему всплывающее окно в котором укажем список нужных городов, обернув каждый в ссылку с указанием параметра
?wt_city_by_default=Город
.
Ссылки по теме:
- Документация по настройке плагина WT Geotargeting от разработчика.
- Как сделать всплывающее окно на HTML и CSS при нажатии на кнопку + Подборка примеров.
Основные шорткоды и параметры для настройки геолокации плагином WT Geotargeting
1 2 3 |
[wt_geotargeting get="city"] — выводит город пользователя. |
Чтобы отобразить номер телефона для пользователя в зависимости от его города (географического местоположения) можно воспользоваться Кодом №2. Тип («phone») может быть своим, это необходимо для группировки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!-- Вывод номера в зависимости от города пользователя --> [wt_geotargeting type="phone" city_show="Рязань"]8(4912) 00-00-00[/wt_geotargeting] [wt_geotargeting type="phone" city_show="Москва"]8(499) 000-00-00[/wt_geotargeting] [wt_geotargeting type="phone" default=true]8-800-000-0000[/wt_geotargeting] <!-- Или от региона --> [wt_geotargeting type="phone2" region_show="Самарская область"]8(4912) 00-00-00[/wt_geotargeting] [wt_geotargeting type="phone2" region_show="Челябинская область"]8(499) 000-00-00[/wt_geotargeting] [wt_geotargeting type="phone2" default=true]8-800-000-0000[/wt_geotargeting] <!-- ** Pro-версия ** --> <!-- Поле поиска городов --> [wt_location_search/] <!-- Вывод списка городов с поддоменом 3 списка --> [wt_locations type_select_location="link_subdomain" columns=3 container_class="row" column_class="col-12 col-md-4"/] |
Get-переменные
wt_country_by_default — сохранение страны в cookie для дальнейшего использования
wt_district_by_default — сохранение округа в cookie для дальнейшего использования
wt_region_by_default — сохранение региона в cookie для дальнейшего использования
wt_city_by_default — сохранение города в cookie для дальнейшего использования
wt_geo_clean — очистка предустановленных данных из Cookie
Атрибуты
type — Тип контента. Любое произвольное имя объединяющее группу условий.
city_show — Условие «Совпадение города».
city_not_show — Условие «Несовпадение города».
region_show — Условие «Совпадение региона».
region_not_show — Условие «Несовпадение региона».
district_show — Условие «Совпадение округа».
district_not_show — Условие «Несовпадение округа».
country_show — Условие «Совпадение страны». Написание в формате «Альфа-2».
country_not_show — Условие «Несовпадение страны». Написание в формате «Альфа-2».
default — Значение по умолчанию. Рекомендуется использовать всегда, так как в случае отсутствия подключения к базе IP-адресов, значение Default выведется в обязательном порядке.
get — Вывод на экран значений региона пользователя. Доступные параметры атрибута: ip, country, city, region, district, lat, lng.
1 2 3 4 5 |
<a href="/kompyuter/?wt_city_by_default=Москва">Москва</a> — Для добавления на сайт возможности посетителю выбрать свой город. <a href="/kompyuter/?wt_city_by_default=Рубежное">Рубежное</a> <a href="/?wt_geo_clean=1">Отменить выбор</a> — сброс города |
Алгоритм вывода на сайте города посетителя с возможностью изменить местоположение:
1. Устанавливаем плагин WT Geotargeting.
2. Устанавливаем (если нет) любой плагин, который выводит попап-окно, например Popup Maker или Popup Builder.
3. В шапке сайта размещаем шорткод и рядом текст Ваш город: [wt_geotargeting get="city"]
.
4. Создаем popup-окно в котором размещаем нужные города ссылками с параметром ?wt_city_by_default=Город
, например, как в Код №4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<ul style="column-count: 3;"> <li><a href="/?wt_city_by_default=Волгоград">Волгоград</a></li> <li><a href="/?wt_city_by_default=Воронеж">Воронеж</a></li> <li><a href="/?wt_city_by_default=Екатеринбург">Екатеринбург</a></li> <li><a href="/?wt_city_by_default=Казань">Казань</a></li> <li><a href="/?wt_city_by_default=Красноярск">Красноярск</a></li> <li><a href="/?wt_city_by_default=Магнитогорск">Магнитогорск</a></li> <li><a href="/?wt_city_by_default=Москва">Москва</a></li> <li><a href="/?wt_city_by_default=Нижний+Новгород">Нижний Новгород</a></li> <li><a href="/?wt_city_by_default=Новосибирск">Новосибирск</a></li> <li><a href="/?wt_city_by_default=Омск">Омск</a></li> <li><a href="/?wt_city_by_default=Пермь">Пермь</a></li> <li><a href="/?wt_city_by_default=Ростов-на-Дону">Ростов-на-Дону</a></li> <li><a href="/?wt_city_by_default=Самара">Самара</a></li> <li><a href="/?wt_city_by_default=Санкт-Петербург">Санкт-Петербург</a></li> <li><a href="/?wt_city_by_default=Уфа">Уфа</a></li> <li><a href="/?wt_city_by_default=Челябинск">Челябинск</a></li> <li><a href="/?wt_geo_clean=1">Отменить выбор</a></li> </ul> |
5. Если используется Pro-версия плагина, то можно еще добавить поиск города — Код №5 (и продолжение этой настройки в п.6):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<div id="geotargetingRegionModalLabel" class="modal-title">Ваш город</div> <!-- Поле поиска города --> <input id="search_location_name" class="text-field" style="width: 100%; margin-bottom: 10px;" name="search_location_name" type="text" placeholder="Найти город" /> <!-- Кнопка поиска города --> <button id="search_location_button" class="text-field us-btn-style_9 ush_btn_1 w-btn" style="width: 100%;" name="gorod_87">Поиск</button> <!-- Блок вывода результата --> <div id="search_location_result"></div> <script type="application/javascript"> jQuery(function() { jQuery('#search_location_name').keypress(function () { searchLocation(); } ); jQuery('#search_location_button').click(function () { searchLocation(); } ); }); // Поиск города на форме выбора региона function searchLocation() { searchLocationName = jQuery("#search_location_name").val(); jQuery.ajax({ url: '/wp-admin/admin-ajax.php', type: 'POST', data: { action: 'search_location', value: searchLocationName, data_type: 'object' }, beforeSend: function (xhr) { }, success: function (data) { search_location_result_html = ''; cities = JSON.parse(data); for (key in cities) { console.log(cities[key]); search_location_result_html += '<a onclick="WtLocation.setValue('; search_location_result_html += "'" + cities[key].post_title + "', 'city', 'reload')"; search_location_result_html += '" class="">' + cities[key].post_title + '</a><br>'; } jQuery("#search_location_result").html(search_location_result_html); } } ); } </script> |
6. Также, чтобы работал поиск по городам необходимо загрузить список городов файл cities.txt
в меню WT Geotargeting Pro — Импорт:
Полезные файлы:
Часто бывают проблемы с выводом Кода №5 при размещении его в редакторе контента, в конструкторах, из-за того что WP преабразует html-теги. В таком случае, можно добавить в теме php-файл и вставить в него Код №5. В functions.php
добавить шорткод (Код №6), который будет выводить код из этого файла. Сам шорткод разместить где требуется.
1 2 3 4 5 6 7 8 9 |
function qfurs_func_wttarget_cities ( $attr, $content = null ) { ob_start(); include_once 'target-city.php'; // файл в папке темы с Кодом №5 return ob_get_clean(); } add_shortcode ( 'qfurs_wttarget_cities', 'qfurs_func_wttarget_cities' ); |
Здравствуйте! Где можно список городов скачать, ссылка не работает. Не могли бы вы прислать файл? Спасибо
Обновил ссылку на cities.txt
Спасибо за информацию.
Получилось сделать всплывающее окно с использованием Вашего кода. Я еще настроил работу поддоменов.
Но при поиске городов список выдает, однако если выбрать город, то перенаправления на поддомен не происходит. Может знаете как подправить? Готовы оплатить.
Не приходилось работать с поддоменами. Могу только порекомендовать документацию по настройке
Спасибо! А можно статью как правильно настроить этому плагину динамический кэш для плагина Super Cache?
Пока получилось только с W3 Total Cache
А можете показать пример сайта с таким работающим плагином? За ранее благодарю!
1 Пример
2 Или вот пример самого разработчика
Протестил ваш методот, работает!
Появились вопросы:
Присоеденяюсь к вопросам!
В статье Код №2 как раз показывает, как можно выводить телефон в зависимости от города. Анологично можно выводить любую информацию.
По остальным вопросам не подскажу. Нужно читать документацию разработчика (ссылки в статье есть)
Кажется, информация по склонению названий городов была в документации.
Как настроить поддомены?
Не знаю. Ссылку на доки выше в комментах скидывал.