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

Почему важно управлять показом popup по ролям пользователей

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

Реализация такой логики требует понимания, как WordPress хранит и обрабатывает роли пользователей, и как с этим работать в коде popup.

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

Основы работы с ролями пользователей в WordPress

Каждый пользователь в WordPress имеет одну или несколько ролей, которые определяют его права и возможности. Основные роли: гость (неавторизованный), подписчик, участник, автор, редактор, администратор.

Для определения роли пользователя в коде используется функция wp_get_current_user(), которая возвращает объект пользователя, у которого есть свойство roles — массив назначенных ролей.

Пример проверки роли пользователя:

$user = wp_get_current_user();
if (in_array('subscriber', (array) $user->roles)) {
    // пользователь с ролью подписчик
}

Создание popup с отключением по ролям: пример кода

Далее рассмотрим пример простой реализации popup, который будет показываться только пользователям без роли администратора.

Вставьте следующий код в файл functions.php вашей темы или в кастомный плагин:

function wppopup_show_popup_by_role() {
    if (is_admin()) return; // не показывать в админке
    $user = wp_get_current_user();
    // Проверяем, является ли пользователь администратором
    if (in_array('administrator', (array) $user->roles)) {
        return; // админам не показываем popup
    }
    // Если пользователь не админ, выводим HTML popup
    ?>
    <div id="wppopup" style="position:fixed;bottom:20px;right:20px;padding:15px;background:#222;color:#fff;z-index:9999;">
        Добро пожаловать на наш сайт! Это popup не виден администраторам.
        <button id="wppopup-close">Закрыть</button>
    </div>
    <script>
        document.getElementById('wppopup-close').addEventListener('click', function() {
            document.getElementById('wppopup').style.display = 'none';
        });
    </script>
    <?php
}
add_action('wp_footer', 'wppopup_show_popup_by_role');

В этом коде при загрузке страницы в футере выводится div с popup. Если пользователь — администратор, popup не появляется. Для других ролей окно показывается. Кнопка закрытия скрывает окно без перезагрузки.

Как расширить логику по ролям

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

if (!array_intersect($user->roles, ['subscriber', 'contributor'])) {
    return; // показываем только подписчикам и участникам
}

Это позволяет гибко настраивать аудиторию показа popup.

Использование плагинов для popup с управлением по ролям

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

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

Также можно рассмотреть плагин Clearfy Pro, который среди прочих функций позволяет управлять видимостью элементов сайта, включая popup, по ролям и другим условиям.

Практические советы и рекомендации

Кэширование и роли пользователей

Если на сайте включено кэширование, важно убедиться, что popup с условием по ролям не кэшируется для всех одинаково. Для этого рекомендуется исключить страницы с popup из кэширования или использовать JavaScript для показа с проверкой роли по AJAX.

UX и частота показа

Не стоит злоупотреблять показом popup — учитывайте частоту, время показа и возможность закрыть окно. Для запоминания закрытия можно использовать cookie или localStorage.

function wppopup_scripts() {
    ?>
    <script>
        if (!localStorage.getItem('wppopup_closed')) {
            document.addEventListener('DOMContentLoaded', function() {
                var popup = document.getElementById('wppopup');
                if (popup) popup.style.display = 'block';
                document.getElementById('wppopup-close').addEventListener('click', function() {
                    popup.style.display = 'none';
                    localStorage.setItem('wppopup_closed', 'yes');
                });
            });
        }
    </script>
    <?php
}
add_action('wp_footer', 'wppopup_scripts');

Этот код позволяет показывать popup один раз за сессию, пока пользователь не закроет его.

Вывод

Управление показом popup по ролям пользователей — важная задача для точного маркетинга и удобства посетителей. В статье показан пример кода для реализации такой логики и даны рекомендации по плагинам с поддержкой подобных условий. Применяйте эти методы для улучшения взаимодействия с аудиторией вашего WordPress сайта.

Как добавить поддержку reCAPTCHA в popup WordPress для защиты от спама
19.04.2026
Как удалить popup из WooCommerce после успешного заказа в WordPress
26.04.2026
Как добавить подписку на рассылку в popup WordPress
23.12.2025
Как отключить popup на определённых страницах WordPress
13.12.2025
Как разбить сложный popup на несколько шагов в WordPress
29.01.2026