Как создать popup с отключением по геолокации в WordPress

В некоторых проектах важна точная настройка показа 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 в зависимости от страны посетителя.

Как удалить popup после успешного отправленного формы с помощью AJAX в WordPress
11.06.2026
Как создать popup на основании User Agent в WordPress
09.04.2026
Как создать popup с динамическими формами в WordPress
01.04.2026
Как создать popup с отключением по часовому поясу в WordPress
05.04.2026
Как удалить popup после успешного отправленного заказа в WooCommerce без перезагрузки страницы
19.05.2026