В некоторых проектах важна точная настройка показа popup в зависимости от географического положения посетителя. Например, вы можете не показывать всплывающее окно пользователям из определённых стран или регионов, чтобы не раздражать аудиторию или соответствовать локальным требованиям.
Почему важно отключать popup по геолокации
Отключение popup по геолокации помогает:
- Улучшить пользовательский опыт, исключая показ ненужных окон;
- Соответствовать требованиям законодательства разных стран;
- Повысить релевантность рекламы и предложений;
- Оптимизировать нагрузку на сервер и клиентские устройства.
Реализовать такую логику можно разными способами — через плагины с поддержкой геолокации или кастомным кодом с внешними API.
Использование плагинов для геолокации popup в WordPress
Для большинства пользователей проще всего начать с готовых решений. Среди популярных плагинов с поддержкой геолокационных условий для popup можно выделить:
- My Popup — универсальный плагин с условиями показа, включая геолокацию;
- Popup Maker — мощный конструктор popup, который с помощью дополнительных расширений поддерживает геотаргетинг;
- OptinMonster — сервис с интеграцией в WordPress и гибкими условиями показа.
В каждом плагине нужна своя настройка, обычно — выбор стран или регионов, где показывать или скрывать popup.
Пример настройки в My Popup
В My Popup можно задать условие показа на вкладке «Условия» — выбрать исключения по стране. Для определения страны плагин использует IP-адрес и базу геолокации MaxMind.
Это простой и удобный вариант, если не хотите вникать в программирование.
Кастомное решение: отключение popup по геолокации через API
Если нужен гибкий и тонкий контроль, можно написать свой код для определения геолокации и отключения popup.
Один из способов — использовать бесплатное API, например, ip-api.com, которое возвращает информацию о стране по IP пользователя.
Пример кода для WordPress
function wppopup_ru_get_user_country() {
$ip = $_SERVER['REMOTE_ADDR'];
$response = wp_remote_get('http://ip-api.com/json/' . $ip);
if (is_wp_error($response)) {
return false;
}
$data = json_decode(wp_remote_retrieve_body($response));
if ($data && $data->status === 'success') {
return $data->countryCode; // US, RU, DE и т.д.
}
return false;
}
function wppopup_ru_should_show_popup() {
$excluded_countries = array('RU', 'BY', 'UA'); // страны, где popup не показываем
$country = wppopup_ru_get_user_country();
if (!$country) {
return true; // не удалось определить страну — показываем popup
}
if (in_array($country, $excluded_countries)) {
return false; // отключаем popup для указанных стран
}
return true;
}Далее в вашем popup-скрипте или шаблоне выводите popup только, если wppopup_ru_should_show_popup() вернёт true.
Интеграция с JavaScript
Если popup показывается через JS, можно добавить AJAX-запрос к серверу для проверки геолокации без перезагрузки страницы:
add_action('wp_ajax_wppopup_ru_check_geo', 'wppopup_ru_ajax_check_geo');
add_action('wp_ajax_nopriv_wppopup_ru_check_geo', 'wppopup_ru_ajax_check_geo');
function wppopup_ru_ajax_check_geo() {
wp_send_json_success(array('show_popup' => wppopup_ru_should_show_popup()));
}В JS:
jQuery(document).ready(function($) {
$.post(ajaxurl, { action: 'wppopup_ru_check_geo' }, function(response) {
if (response.success && response.data.show_popup) {
// показать popup
}
});
});Советы по оптимизации и безопасности
При использовании внешних API для геолокации важно учитывать задержки и ограничения по количеству запросов. Для снижения нагрузки рекомендуем кешировать результаты геолокации по IP, например, в транзиенте:
function wppopup_ru_get_user_country_cached() {
$ip = $_SERVER['REMOTE_ADDR'];
$cache_key = 'wppopup_ru_geo_' . md5($ip);
$country = get_transient($cache_key);
if ($country !== false) {
return $country;
}
$country = wppopup_ru_get_user_country();
if ($country) {
set_transient($cache_key, $country, HOUR_IN_SECONDS * 12); // кеш на 12 часов
}
return $country;
}Также следите за правильной обработкой ошибок и не блокируйте пользователя, если определить геолокацию не удалось.
Заключение
Отключение popup по геолокации — полезный инструмент для повышения качества взаимодействия с пользователями. Для большинства случаев достаточно готовых плагинов, таких как My Popup. Для сложных сценариев подойдёт кастомный код с вызовом API и кешированием результатов.
Используйте предложенные примеры и адаптируйте их под свои задачи для точного контроля показов popup в зависимости от страны посетителя.