WordPress уведомления о входе: как настроить кастомные email-уведомления для администраторов

В современных проектах на WordPress важна не только безопасность сайта, но и информирование администраторов о ключевых событиях, таких как входы пользователей. Особенно это актуально для сайтов с большим количеством пользователей или повышенными требованиями к безопасности. В этой статье подробно разберём, как реализовать кастомные email-уведомления при успешном входе пользователя в WordPress, рассмотрим несколько плагинов, которые помогут упростить задачу, и приведём примеры собственного кода для расширенной настройки уведомлений.

Почему важно настроить уведомления о входе в WordPress

Часто администраторы не знают, когда и кто входит в систему, что затрудняет оперативное реагирование на подозрительную активность. Например, если кто-то получил доступ к учётной записи администратора, уведомление поможет быстро заметить это и принять меры. Кроме того, это удобно для мониторинга активности сотрудников или клиентов на сайте.

Стандартный WordPress не отправляет email-уведомления при входе, поэтому нужно использовать либо готовые решения, либо писать свои функции.

Плагины для уведомлений о входе в WordPress

Plugin 1: WP Activity Log

Один из самых популярных плагинов для мониторинга активности пользователей. Он ведёт подробный лог, включая события входа и выхода, и умеет отправлять уведомления на email. Настройка гибкая — можно выбрать, какие роли пользователей отслеживать и при каких условиях отправлять письма.

Подробности и загрузка: WP Activity Log на WPSHOP.RU

Plugin 2: Login Alert

Простой и лёгкий плагин, который отправляет уведомления при входе пользователей с указанием IP, браузера и времени. Его легко настроить и использовать, но функционал ограничен именно email-уведомлениями без дополнительного логирования.

Скачать: Login Alert на WPSHOP.RU

Как написать собственный плагин для кастомных уведомлений о входе

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

Создаём функцию уведомления при успешном входе

function wpauth_send_login_notification($user_login, $user) {
    $admin_email = get_option('admin_email');
    $subject = 'Уведомление о входе пользователя на сайт';
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $message = "Пользователь: {$user_login}\n";
    $message .= "Email: {$user->user_email}\n";
    $message .= "IP-адрес: {$ip}\n";
    $message .= "Время входа: {$time}\n";

    wp_mail($admin_email, $subject, $message);
}
add_action('wp_login', 'wpauth_send_login_notification', 10, 2);

Эта функция получает логин и объект пользователя, собирает информацию об IP и времени, и отправляет письмо на email администратора. Хук wp_login вызывается после успешной авторизации.

Добавляем дополнительную проверку ролей пользователей

Часто нет смысла уведомлять о входе всех пользователей, а только администраторов или пользователей с определённой ролью. Для этого можно расширить функцию:

function wpauth_send_login_notification_filtered($user_login, $user) {
    // Уведомлять только администраторов
    if (!in_array('administrator', $user->roles)) {
        return;
    }

    $admin_email = get_option('admin_email');
    $subject = 'Вход администратора на сайт';
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $message = "Администратор: {$user_login}\n";
    $message .= "Email: {$user->user_email}\n";
    $message .= "IP-адрес: {$ip}\n";
    $message .= "Время входа: {$time}\n";

    wp_mail($admin_email, $subject, $message);
}
// Отменяем предыдущий хук, если он есть
remove_action('wp_login', 'wpauth_send_login_notification', 10);
add_action('wp_login', 'wpauth_send_login_notification_filtered', 10, 2);

Теперь уведомления будут приходить только при входе администраторов.

Как улучшить уведомления: дополнительные данные и форматирование

Для удобства в письме можно указать не только IP, но и геолокацию по IP, браузер пользователя и ссылку на профиль в админке.

Пример добавления браузера и ссылки на профиль:

function wpauth_send_detailed_login_notification($user_login, $user) {
    if (!in_array('administrator', $user->roles)) {
        return;
    }

    $admin_email = get_option('admin_email');
    $subject = 'Вход администратора на сайт';
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $profile_url = admin_url("user-edit.php?user_id={$user->ID}");

    $message = "Администратор: {$user_login}\n";
    $message .= "Email: {$user->user_email}\n";
    $message .= "IP-адрес: {$ip}\n";
    $message .= "Время входа: {$time}\n";
    $message .= "Браузер: {$user_agent}\n";
    $message .= "Профиль: {$profile_url}\n";

    wp_mail($admin_email, $subject, $message);
}
remove_action('wp_login', 'wpauth_send_login_notification_filtered', 10);
add_action('wp_login', 'wpauth_send_detailed_login_notification', 10, 2);

Такое письмо будет гораздо информативнее и поможет быстрее реагировать на подозрительную активность.

Отправка HTML-писем с кастомным дизайном

Чтобы сделать уведомления визуально приятнее, можно отправлять HTML-письма. Для этого в WordPress нужно добавить соответствующий заголовок:

function wpauth_set_html_mail_content_type() {
    return 'text/html';
}
add_action('wp_mail_content_type', 'wpauth_set_html_mail_content_type');

function wpauth_send_html_login_notification($user_login, $user) {
    if (!in_array('administrator', $user->roles)) {
        return;
    }

    $admin_email = get_option('admin_email');
    $subject = 'Вход администратора на сайт';
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $profile_url = admin_url("user-edit.php?user_id={$user->ID}");

    $message = "<h2>Вход администратора на сайт</h2>";
    $message .= "<p><strong>Пользователь:</strong> {$user_login}</p>";
    $message .= "<p><strong>Email:</strong> {$user->user_email}</p>";
    $message .= "<p><strong>IP-адрес:</strong> {$ip}</p>";
    $message .= "<p><strong>Время входа:</strong> {$time}</p>";
    $message .= "<p><strong>Браузер:</strong> {$user_agent}</p>";
    $message .= "<p><a href='{$profile_url}'>Перейти в профиль пользователя</a></p>";

    wp_mail($admin_email, $subject, $message);
}
remove_action('wp_login', 'wpauth_send_detailed_login_notification', 10);
add_action('wp_login', 'wpauth_send_html_login_notification', 10, 2);

// После отправки писем желательно вернуть тип контента в текстовый
function wpauth_reset_mail_content_type() {
    return 'text/plain';
}
add_action('wp_mail_failed', 'wpauth_reset_mail_content_type');

Это позволит сделать уведомления более читаемыми и профессиональными.

Заключение по теме кастомных уведомлений о входе

Настройка уведомлений о входе — важный элемент безопасности и контроля за сайтом на WordPress. Вариантов решения много: от установки готовых плагинов до создания собственного функционала с тонкой настройкой. Приведённые примеры кода дают основу для создания именно того решения, которое подходит под ваши задачи.

Если вы хотите расширить функционал сайта дополнительными возможностями, например, улучшить безопасность или добавить удобные инструменты, обратите внимание на решения от WPSHOP.RU — там есть много полезных плагинов и тем для WordPress.

WordPress уведомления о входе: как настроить кастомные email-уведомления для администраторов
11.01.2026
WordPress AJAX валидация форм: пример и реализация
17.11.2025
WordPress авторизация по OTP без SMS: настройка и примеры кода
10.02.2026
Как отключить REST API для неавторизованных пользователей в WordPress
18.01.2026
WordPress кастомные сообщения об ошибках при входе: настройка и примеры
01.12.2025