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

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

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

По умолчанию WordPress не хранит развернутые логи попыток авторизации. Это значит, что администратор сайта не видит подробной информации о том, кто и когда пытался войти, с какого IP-адреса, с какого устройства и т.п. Такие данные крайне полезны для:

  • Выявления подозрительной активности и атак Brute Force;
  • Анализа поведения пользователей на сайте;
  • Улучшения общей безопасности и принятия мер по блокировке злонамеренных попыток;
  • Отчётов для аудита и контроля доступа.

Добавив логирование, вы получите расширенный контроль над процессом входа, сможете оперативно реагировать на угрозы и повысить уровень безопасности вашего сайта.

Как добавить логирование входа через код в functions.php

Для начала рассмотрим, как создать собственный простой логгер, который будет записывать события входа в отдельный файл. Мы будем использовать хуки WordPress wp_login для успешного входа и wp_login_failed для неудачных попыток.

Запись успешных входов

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wplogin_ru_log_successful_login($user_login) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $log_entry = "SUCCESS LOGIN: User: $user_login | IP: $ip | Time: $time\n";
    error_log($log_entry, 3, WP_CONTENT_DIR . '/login-logs.txt');
}
add_action('wp_login', 'wplogin_ru_log_successful_login', 10, 1);

Этот код записывает имя пользователя, IP-адрес и время успешного входа в файл wp-content/login-logs.txt. Убедитесь, что у папки wp-content есть права на запись.

Запись неудачных попыток входа

Чтобы логировать неуспешные попытки, добавьте:

function wplogin_ru_log_failed_login($username) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $log_entry = "FAILED LOGIN: User: $username | IP: $ip | Time: $time\n";
    error_log($log_entry, 3, WP_CONTENT_DIR . '/login-logs.txt');
}
add_action('wp_login_failed', 'wplogin_ru_log_failed_login');

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

Дополнительные сведения для логирования

Чтобы сделать логи более информативными, можно добавить User Agent браузера, URL страницы входа и даже геолокацию по IP с помощью сторонних сервисов. Например, расширим функцию:

function wplogin_ru_log_successful_login_extended($user_login) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Direct';
    $time = date('Y-m-d H:i:s');
    $log_entry = "SUCCESS LOGIN: User: $user_login | IP: $ip | Agent: $user_agent | Referer: $referer | Time: $time\n";
    error_log($log_entry, 3, WP_CONTENT_DIR . '/login-logs.txt');
}
remove_action('wp_login', 'wplogin_ru_log_successful_login');
add_action('wp_login', 'wplogin_ru_log_successful_login_extended', 10, 1);

Так вы получите больше данных для анализа и сможете легче выявлять подозрительные попытки.

Использование плагинов для логирования входов в WordPress

Если вы не хотите писать код или хотите расширенные возможности, есть хорошие плагины для логирования входов, которые можно установить и настроить быстро:

  • WP Activity Log — один из самых популярных плагинов для логирования активности пользователей, включая входы. Позволяет вести подробные отчеты, отправлять уведомления и фильтровать события.
  • Simple Login Log — легкий плагин, который сохраняет логи успешных и неуспешных входов, выводит отчеты в админке.
  • Loginizer — плагин для защиты от атак и логирования попыток входа, позволяет блокировать IP и имеет удобный интерфейс.

Все эти плагины можно найти на официальном репозитории WordPress. Для расширенной интеграции и поддержки русскоязычных пользователей рекомендуем ознакомиться с WP Activity Log от WPSHOP.

Пример создания собственного плагина для логирования входов

Если вы предпочитаете оформить код логирования в виде плагина, создайте файл wplogin-logs.php с таким содержанием:

<?php
/**
 * Plugin Name: WPLogin Logs
 * Description: Логирование успешных и неудачных входов в WordPress
 * Version: 1.0
 * Author: wplogin.ru
 */

function wplogin_ru_log_successful_login_plugin($user_login) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $log_entry = "SUCCESS LOGIN: User: $user_login | IP: $ip | Time: $time\n";
    error_log($log_entry, 3, WP_CONTENT_DIR . '/login-logs.txt');
}
add_action('wp_login', 'wplogin_ru_log_successful_login_plugin', 10, 1);

function wplogin_ru_log_failed_login_plugin($username) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = date('Y-m-d H:i:s');
    $log_entry = "FAILED LOGIN: User: $username | IP: $ip | Time: $time\n";
    error_log($log_entry, 3, WP_CONTENT_DIR . '/login-logs.txt');
}
add_action('wp_login_failed', 'wplogin_ru_log_failed_login_plugin');
?>

Загрузите плагин в папку wp-content/plugins, активируйте его в админке — и логи начнут записываться.

Как анализировать и использовать логи входов

Файл login-logs.txt можно просматривать через FTP или файловый менеджер хостинга. Для удобства можно подключить анализатор логов, например, импортировать данные в систему мониторинга или создать отдельную страницу в админке с выводом логов.

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

Пример простой проверки количества неудачных входов с одного IP

function wplogin_ru_check_failed_logins($username) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $log_file = WP_CONTENT_DIR . '/login-logs.txt';
    $failed_count = 0;
    if (file_exists($log_file)) {
        $lines = file($log_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        foreach ($lines as $line) {
            if (strpos($line, "FAILED LOGIN") !== false && strpos($line, "IP: $ip") !== false) {
                $failed_count++;
            }
        }
    }
    if ($failed_count > 5) {
        // Здесь можно добавить логику блокировки IP или отправки уведомления
    }
}
add_action('wp_login_failed', 'wplogin_ru_check_failed_logins');

Этот код подсчитывает неудачные попытки с текущего IP и при превышении порога можно выполнить нужные действия.

Отладка проблем входа в WordPress при использовании WooCommerce
01.07.2026
Как автоматически разблокировать пользователей после блокировки в WordPress
12.05.2026
Как отключить регистрацию в WordPress без плагинов
12.12.2025
Как сделать один вход в WordPress для нескольких сайтов (единый вход)
03.04.2026
Как исправить проблему: не работает вход в WordPress при использовании WooCommerce
19.06.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.