Нередко возникает задача сделать уведомления в WordPress более персонализированными для пользователей: показывать сообщения, учитывая роль пользователя, его активность, или другие параметры. В этой статье подробно разберём, как создать систему персонализированных уведомлений, управлять ими и выводить в нужных местах сайта. Это позволит улучшить взаимодействие с посетителями и повысить удобство использования сайта.
Почему важна персонализация уведомлений в WordPress
Стандартные уведомления WordPress — это обычно системные сообщения или всплывающие окна плагинов, которые не учитывают контекст пользователя. Персонализированные уведомления позволяют:
- Показывать релевантные сообщения конкретным группам пользователей (роли, статусы);
- Увеличить вовлечённость за счёт адресных призывов к действию;
- Повысить конверсию, напоминая о важных событиях или акциях;
- Сделать интерфейс сайта дружелюбнее и информативнее.
Далее рассмотрим, как технически реализовать такую систему.
Основы создания персонализированных уведомлений: фильтры и хуки
В WordPress для вывода уведомлений чаще всего используют хуки admin_notices и wp_footer (для фронтенда). Для персонализации важно использовать функции проверки пользователя, например, is_user_logged_in(), wp_get_current_user().
Простейший пример вывода персонализированного уведомления в админке:
function wpmake_personal_notice() {
if ( !is_user_logged_in() ) {
return;
}
$user = wp_get_current_user();
if ( in_array( 'subscriber', (array) $user->roles ) ) {
echo '<div class="notice notice-info is-dismissible">';
echo '<p>Привет, ' . esc_html( $user->display_name ) . '! Не забудьте обновить свой профиль.</p>';
echo '</div>';
}
}
add_action( 'admin_notices', 'wpmake_personal_notice' );
В этом примере уведомление показывается только подписчикам, приветствуя их по имени. Аналогично можно выводить сообщения и на фронтенде, используя wp_footer или свои хуки в шаблонах.
Как управлять уведомлениями: хранение и настройки
Персонализированные уведомления часто требуют гибкой настройки и хранения информации о показах, чтобы не показывать их повторно или учитывать действия пользователя.
Для этого можно использовать пользовательские мета-поля пользователя (user_meta) и опции WordPress. Например, сохранять дату последнего показа уведомления и не выводить его чаще одного раза в неделю.
Пример функции, проверяющей, нужно ли показывать уведомление:
function wpmake_should_show_notice( $user_id ) {
$last_shown = get_user_meta( $user_id, '_wpmake_notice_last_shown', true );
if ( ! $last_shown ) {
return true; // Показываем впервые
}
$one_week = 7 * DAY_IN_SECONDS;
return ( time() - $last_shown ) > $one_week;
}
И обновление времени показа после вывода уведомления:
update_user_meta( $user_id, '_wpmake_notice_last_shown', time() );
Так можно контролировать частоту показа и предотвращать раздражение пользователей.
Пример расширенной системы уведомлений с использованием кастомного плагина
Рассмотрим пример плагина WPMake Personal Notices, который добавляет в админку страницу настроек уведомлений, позволяет создавать несколько типов сообщений и управлять их условиями показа.
Структура плагина
- Регистрация кастомного типа уведомлений;
- Страница настроек с выбором ролей и условий показа;
- Вывод уведомлений в админке и на сайте;
- Учет частоты показа с помощью
user_meta.
Код регистрации уведомления и их вывод
function wpmake_register_notice_type() {
register_post_type( 'wpmake_notice', [
'labels' => [
'name' => 'Уведомления',
'singular_name' => 'Уведомление'
],
'public' => false,
'show_ui' => true,
'supports' => [ 'title', 'editor' ]
]);
}
add_action( 'init', 'wpmake_register_notice_type' );
function wpmake_show_notices() {
if ( ! is_user_logged_in() ) {
return;
}
$user = wp_get_current_user();
$args = [
'post_type' => 'wpmake_notice',
'post_status' => 'publish',
'posts_per_page' => -1
];
$notices = get_posts( $args );
foreach ( $notices as $notice ) {
$roles = get_post_meta( $notice->ID, '_wpmake_notice_roles', true );
if ( $roles && ! array_intersect( $user->roles, $roles ) ) {
continue;
}
$last_shown = get_user_meta( $user->ID, '_wpmake_notice_' . $notice->ID . '_last_shown', true );
if ( $last_shown && ( time() - $last_shown ) < 7 * DAY_IN_SECONDS ) {
continue;
}
echo '<div class="notice notice-success is-dismissible">';
echo wp_kses_post( $notice->post_content );
echo '</div>';
update_user_meta( $user->ID, '_wpmake_notice_' . $notice->ID . '_last_shown', time() );
}
}
add_action( 'admin_notices', 'wpmake_show_notices' );
Данный код регистрирует кастомный тип записей для уведомлений, выводит их для пользователей с подходящей ролью и хранит дату последнего показа, чтобы не надоедать.
Использование готовых плагинов для расширения возможностей уведомлений
Если хочется быстро внедрить персонализированные уведомления, можно обратить внимание на плагины, совместимые с вашим сайтом. Например, My Popup из WPShop отлично подходит для создания всплывающих окон с условиями показа, включая настройку на роли пользователей и частоту показа.
Также можно рассмотреть Expert Review, если нужно собирать отзывы и показывать уведомления об их наличии или необходимости оставить отзыв.
Советы по UX и безопасности персонализированных уведомлений
Персонализированные уведомления должны быть ненавязчивыми и полезными. Учитывайте частоту показа, позволяйте пользователям легко закрывать уведомления и не показывайте одно и то же слишком часто.
Также не забывайте экранировать выводимый контент с помощью функций esc_html(), wp_kses_post() и проверять права пользователя, чтобы избежать XSS-уязвимостей.
Выводы и рекомендации
Создание персонализированных уведомлений — мощный инструмент для улучшения взаимодействия с пользователями WordPress сайтов. Используя базовые хуки и метаданные пользователя, можно быстро настроить простую систему. Для более сложных задач подойдёт разработка собственного плагина или использование готовых решений из WPShop.