wpmake.ru wordpress WPMake

Персонализированные уведомления в WordPress: создание и настройка

Нередко возникает задача сделать уведомления в 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.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙