Как отключить popup в WordPress для определённых ролей пользователей
Почему важно управлять показом popup по ролям пользователей
Всплывающие окна (popup) — мощный инструмент для привлечения внимания посетителей сайта, сбора контактов и повышения конверсии. Однако в некоторых случаях необходимо отключать их показ для определённых групп пользователей. Например, для авторизованных клиентов, администраторов, редакторов или других ролей, чтобы не мешать работе или не раздражать постоянных посетителей.
Управление показом popup по ролям помогает улучшить пользовательский опыт, снизить количество негативных отзывов и повысить релевантность коммуникаций. Особенно это важно, если на сайте используется сложный маркетинговый сценарий, и popup содержит информацию, не предназначенную для всех.
В этой статье разберём, как технически реализовать отключение popup для выбранных ролей пользователей в WordPress, используя как код, так и популярные плагины.
Отключение popup для ролей пользователей через функции темы
Основы определения роли пользователя в WordPress
WordPress хранит информацию о роли каждого пользователя, и получить её можно с помощью встроенных функций. Например, wp_get_current_user() возвращает объект текущего пользователя, у которого есть свойство roles — массив с названиями ролей.
Для проверки роли пользователя удобно использовать функцию, которую мы назовём wppopup_check_user_role(). Она будет возвращать true, если текущий пользователь имеет одну из указанных ролей.
function wppopup_check_user_role($roles = []) {
if (!is_user_logged_in()) {
return false;
}
$user = wp_get_current_user();
foreach ($roles as $role) {
if (in_array($role, (array) $user->roles)) {
return true;
}
}
return false;
}Пример отключения popup с помощью фильтра или условия
Если у вас есть popup, который выводится через хук или функцию, можно добавить проверку ролей и не показывать окно для выбранных пользователей.
Например, допустим, popup выводится через функцию wppopup_show_popup(). Тогда код будет таким:
function wppopup_show_popup_for_roles() {
// Список ролей, для которых НЕ нужно показывать popup
$excluded_roles = ['administrator', 'editor'];
if (wppopup_check_user_role($excluded_roles)) {
return; // Не показывать popup
}
// Код показа popup
wppopup_show_popup();
}Этот код можно подключить в файле темы functions.php или в плагине для кастомных функций.
Отключение popup с помощью популярных плагинов
Плагин My Popup и его настройки по ролям
Если вы используете плагин My Popup от WPShop, в нём есть встроенный механизм контроля показа popup по ролям пользователей.
В админке плагина при создании или редактировании popup в разделе «Отображение» вы можете выбрать опцию «Не показывать для ролей», где указать нужные роли, например, «Администратор», «Редактор», «Автор» и т.д.
Это самый простой способ отключить popup без написания кода. Такой подход удобен, если вы хотите гибко управлять показом popup через интерфейс.
Другие плагины с поддержкой ролей
Плагины, такие как Popup Maker и OptinMonster, тоже позволяют задать условия показа по ролям через настройки или с помощью дополнительных расширений.
Для Popup Maker можно использовать фильтр pum_show_popup и добавить проверку ролей в callback-функции. Например:
add_filter('pum_show_popup', function($show, $popup_id) {
$excluded_roles = ['subscriber'];
if (wppopup_check_user_role($excluded_roles)) {
return false; // Отключить показ
}
return $show;
}, 10, 2);Отключение popup через JavaScript с проверкой ролей пользователя
Иногда popup создаётся через JavaScript и подключается на фронтенде. В таких случаях отключить показ по ролям можно передать роль пользователя из PHP в JS и на её основе контролировать показ.
Для этого в functions.php добавим передачу данных:
function wppopup_enqueue_scripts() {
wp_enqueue_script('wppopup-main', get_template_directory_uri() . '/js/wppopup.js', ['jquery'], null, true);
$roles = [];
if (is_user_logged_in()) {
$user = wp_get_current_user();
$roles = $user->roles;
}
wp_localize_script('wppopup-main', 'wppopupData', [
'userRoles' => $roles
]);
}
add_action('wp_enqueue_scripts', 'wppopup_enqueue_scripts');В JS-файле можно проверить роли и не запускать popup:
jQuery(document).ready(function($) {
var excludedRoles = ['administrator', 'editor'];
var userRoles = wppopupData.userRoles || [];
var disablePopup = excludedRoles.some(function(role) {
return userRoles.includes(role);
});
if (disablePopup) {
return; // Не показываем popup
}
// Логика показа popup
wppopup_show();
});Рекомендации и лучшие практики при отключении popup по ролям
1. Тестируйте решение на разных ролях, чтобы убедиться, что popup не показывается тем, для кого отключён, и корректно отображается для остальных.
2. Используйте кэширование аккуратно: если на сайте есть кэширование страниц, исключите кэширование для динамического показа popup с учётом роли пользователя.
3. Если используете сторонние плагины, внимательно изучайте их API и возможности условий показа, чтобы избежать конфликтов и избыточных решений.
4. Регулярно обновляйте код и плагины, чтобы сохранять безопасность и совместимость.
Заключение
Отключение popup в WordPress для определённых ролей пользователей — задача, часто встречающаяся при тонкой настройке сайта. Используя возможности PHP, JavaScript и функционал популярных плагинов, можно гибко управлять показом всплывающих окон, обеспечивая лучший пользовательский опыт и повышая эффективность маркетинговых инструментов.
Для простых и быстрых решений рекомендуем использовать плагин My Popup от WPShop, где настройка ролей осуществляется через удобный интерфейс без кода.