Почему важно управлять показом 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 сайта.