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

В некоторых случаях необходимо показывать popup на сайте WordPress всем посетителям, кроме определённых IP-адресов. Например, чтобы не раздражать сотрудников компании, администраторов или тестировщиков, которые заходят с фиксированных IP. В этой статье разберём, как создать popup с отключением показа по IP с помощью простого кода и готовых плагинов.

Почему важно отключать popup по IP

Часто popup используется для привлечения внимания к акциям, подпискам и важной информации. Однако, если сотрудники или постоянные пользователи видят эти окна слишком часто, это может снижать комфорт работы с сайтом и создавать ложные данные аналитики.

Отключение показа popup по IP позволяет:

  • Улучшить UX для внутренних пользователей.
  • Избежать искажения статистики по конверсиям и взаимодействиям.
  • Автоматизировать исключение определённых групп пользователей без дополнительных плагинов.

Создаём функцию для проверки IP в WordPress

Для начала нужно получить IP посетителя и сравнить с массивом исключённых IP. Добавим функцию wppopup_get_user_ip(), которая корректно определит IP, учитывая различные заголовки.

function wppopup_get_user_ip() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        return trim($ips[0]);
    } else {
        return $_SERVER['REMOTE_ADDR'] ?? '';
    }
}

Теперь создадим функцию wppopup_is_ip_excluded(), которая проверит, входит ли IP в список исключённых адресов:

function wppopup_is_ip_excluded($excluded_ips) {
    $user_ip = wppopup_get_user_ip();
    return in_array($user_ip, $excluded_ips);
}

Список исключённых IP можно задавать в настройках или прямо в коде, например:

$excluded_ips = ['192.168.1.10', '123.45.67.89'];

Интеграция с показом popup

Если вы используете свой код для popup, достаточно добавить проверку перед выводом окна:

if (!wppopup_is_ip_excluded($excluded_ips)) {
    // Выводим код popup
    echo '<div class="popup">Ваш popup контент</div>';
}

Если применяете популярные плагины popup, например My Popup, можно использовать их функционал для добавления условий показа через хуки или фильтры.

Пример для плагина My Popup с фильтром

My Popup позволяет фильтровать показ через хук my_popup_should_show. Добавим проверку IP, чтобы запретить показ для исключённых адресов:

add_filter('my_popup_should_show', function($show) {
    $excluded_ips = ['192.168.1.10', '123.45.67.89'];
    if (wppopup_is_ip_excluded($excluded_ips)) {
        return false;
    }
    return $show;
});

Как расширить функциональность: диапазоны IP и CIDR

Иногда нужно исключать целые подсети, например офис с динамическими IP. Для этого полезно проверять IP в диапазоне или по маске CIDR.

Для проверки CIDR можно использовать библиотеку или функцию:

function wppopup_ip_in_cidr($ip, $cidr) {
    list($subnet, $mask) = explode('/', $cidr);
    return (ip2long($ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($subnet);
}

Теперь можно задать исключения так:

$excluded_cidrs = ['192.168.1.0/24', '123.45.67.0/28'];

function wppopup_is_ip_excluded_cidr($excluded_cidrs) {
    $user_ip = wppopup_get_user_ip();
    foreach ($excluded_cidrs as $cidr) {
        if (wppopup_ip_in_cidr($user_ip, $cidr)) {
            return true;
        }
    }
    return false;
}

Эту функцию можно использовать вместо простой проверки массива IP, чтобы сделать фильтр гибче.

Рекомендации по безопасности и производительности

1. Не храните список исключённых IP в базе данных без необходимости, лучше в настройках плагина или константах.

2. При большом количестве IP или CIDR используйте кеширование результата проверки, чтобы не перегружать сервер.

3. Тестируйте определение IP клиента, особенно если сайт работает за прокси или CDN (Cloudflare, Nginx).

4. Обновляйте список исключений, следите за изменениями IP у сотрудников или сервисов.

Заключение по теме

Отключение показа popup по IP — простой, но мощный способ улучшить пользовательский опыт и точность аналитики. С помощью приведённых функций и примеров вы сможете быстро добавить такую логику в свой сайт WordPress, используя как собственный код, так и популярные плагины, например My Popup. Это повысит качество взаимодействия с сайтом для разных групп пользователей и сделает вашу работу более профессиональной.

Как создать popup с отключением по часовому поясу в WordPress
05.04.2026
Как удалить popup после успешного отправленного формы с помощью AJAX в WordPress
11.06.2026
Как удалить popup после успешного отправленного заказа в WooCommerce без перезагрузки страницы
07.05.2026
Удаление popup после успешного отправленного отзыва в WooCommerce без перезагрузки страницы
14.05.2026
Как запретить повторное открытие popup в WordPress на одной странице
14.01.2026