@egrom92
Верстаю

Какой плагин использовать на вордпресс для определения геолокации?

Мы делаем определение региона. На главной странице отображается телефон для звонков клиентов ...соответственно , нужно будет указать там 2 номера ...для Москвы и чеченской республики...
как мне реализовать, что если регион определился , чтобы отображался только 1 соответствующий номер ?
Для Москвы 1 номер, для чеченской республики другой номер.
И я так понимаю, с какой-то вероятностью регион будет не определяться ? Тогда чтобы отображались оба номера.
  • Вопрос задан
  • 2231 просмотр
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Первое что нужно понимать - геолокацию лучше всего делать на уровне сервера. У Nginx и Apache есть для этого модули, многие сервисы типа CloudFlare (если вы используете) делают геолокацию и передают данные в заголовках. В обеих случаях данные геолокации будут доступны в массиве $_SERVER. Это обеспечит максимальную производительность. Есть еще вариант на уровне модуля PHP, но имхо это полумера. Ну а если это на уровне PHP (а тем более на уровне WordPress), то скорость будет желать лучшего. Для геолокации нужно сверить IP по огромной базе данных. На уровне сервера это бинарный файл и все оптимизировано до максимума. На PHP это все runtime и крайне неэффективно.

Впрочем, если вам все равно нужно простое и быстрое решение в виде плагина, несмотря на все недостатки - смотрите тут https://wordpress.org/plugins/tags/geolocation/.

Есть еще вариант запрашивать сторонний API, передавая ему IP-адрес, но это вообще адски медленная муть по сравнению с серверной геолокацией.

Дополнительно не забудьте учесть, что так или иначе данные геолокации вам будут доступны на уровне PHP. Это означает, что если вы используете плагин для кеширования страниц целиком (full page cache), то WordPress в этом случае не запускается вообще (а то и PHP не запускается - зависит от реализации механизма FPC). В этом случае придется опираться на Javascript. Для этого есть HTML Geolocation API, но он эффективен на устройствах с геолокацией и запрашивает у пользователя разрешение на доступ к данным геолокации. Более надежным (но менее производительным) будет что-то из разряда https://dev.maxmind.com/geoip/geoip2/javascript/. Ну или аналоги ищите.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Библиотека для определения геоинформации для WordPress, Joomla и Bitrix(в битрикс уже есть и своя реализация) - blog.ivru.net/?id=82
В библиотеке есть метод isSpb который определяет относится ли город определённый по IP к региону Санкт Петербург
Делаете 2 аналогичных метода для Москвы и Чеченской республики, например isMsk и isCr

далее в коде
require_once "/путь_до_папки_с_библиотекой/nikolaevevgeGeoIp.php";
if (nikolaevevgeGeoIp::isMsk) {
// выводите нужный номер телефона
} elseif (nikolaevevgeGeoIp::isCr) {
// выводите нужный номер телефона
} elseif {
// выводите оба номера
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы