Ведение учёта входов пользователей в WordPress — важная задача для администраторов сайтов, особенно когда нужно отслеживать активность, выявлять подозрительные попытки авторизации или просто анализировать поведение пользователей. В этой статье мы разберём, как создать автоматический отчет о входах в WordPress с помощью собственного кода и полезных плагинов.
Почему важно вести отчет о входах в WordPress
Отчёт о входах позволяет иметь подробную статистику о том, кто и когда заходил на сайт. Это помогает:
- Отслеживать попытки несанкционированного доступа;
- Анализировать активность пользователей;
- Автоматизировать уведомления о входах для администраторов;
- Вести аудит безопасности.
Нередко администраторы используют сторонние сервисы, но их можно заменить собственным решением, полностью контролируемым и кастомизируемым под ваши нужды.
Реализация автоматического отчета с помощью кода
Для создания отчета первым делом нужно сохранять информацию о каждом успешном входе пользователя. Для этого воспользуемся хуком wp_login, который срабатывает при авторизации.
Пример функции, которая сохраняет данные о входе в кастомную таблицу:
function wplogin_save_login_record($user_login, $user) {
global $wpdb;
$table = $wpdb->prefix . 'wplogin_logins';
$wpdb->insert(
$table,
array(
'user_id' => $user->ID,
'user_login' => $user_login,
'login_time' => current_time('mysql'),
'user_ip' => $_SERVER['REMOTE_ADDR']
),
array('%d', '%s', '%s', '%s')
);
}
add_action('wp_login', 'wplogin_save_login_record', 10, 2);Для начала нужно создать таблицу wp_wplogin_logins в базе данных, в которой будут храниться записи:
function wplogin_create_logins_table() {
global $wpdb;
$table = $wpdb->prefix . 'wplogin_logins';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT(20) UNSIGNED NOT NULL,
user_login VARCHAR(60) NOT NULL,
login_time DATETIME NOT NULL,
user_ip VARCHAR(45) NOT NULL,
PRIMARY KEY (id),
KEY user_id (user_id),
KEY login_time (login_time)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wplogin_create_logins_table');Этот код создаст таблицу при активации плагина, а функция wplogin_save_login_record будет записывать информацию о каждом успешном входе пользователя.
Создание страницы отчета в админке
Чтобы просматривать отчеты, добавим страницу в админ-панель:
function wplogin_add_admin_menu() {
add_menu_page(
'Отчёт о входах',
'Отчёт о входах',
'manage_options',
'wplogin-login-report',
'wplogin_render_report_page',
'dashicons-analytics',
30
);
}
add_action('admin_menu', 'wplogin_add_admin_menu');
function wplogin_render_report_page() {
global $wpdb;
$table = $wpdb->prefix . 'wplogin_logins';
$results = $wpdb->get_results("SELECT * FROM $table ORDER BY login_time DESC LIMIT 50");
echo '<h1>Отчёт о входах пользователей</h1>';
echo '<table class="widefat fixed">';
echo '<thead><tr><th>ID</th><th>Пользователь</th><th>Дата и время</th><th>IP-адрес</th></tr></thead>';
echo '<tbody>';
foreach ($results as $row) {
echo "<tr><td>{$row->id}</td><td>{$row->user_login}</td><td>{$row->login_time}</td><td>{$row->user_ip}</td></tr>";
}
echo '</tbody></table>';
}Теперь в админке будет доступен раздел с последними 50 входами пользователей — удобный инструмент для мониторинга.
Использование плагинов для отчетов о входах
Если не хочется писать код, можно использовать готовые решения. Вот несколько популярных плагинов с функцией логирования входов:
- WP Activity Log — мощный инструмент для аудита активности пользователей, включая входы и выходы;
- Simple Login Log — легкий плагин для записи успешных и неудачных попыток входа;
- Audit Log — комплексное решение для отслеживания действий пользователей.
Эти плагины позволяют не только хранить логи, но и автоматически отправлять уведомления, фильтровать данные и экспортировать отчеты.
Пример настройки WP Activity Log
Установите плагин WP Activity Log и перейдите в настройки. В разделе Login Activity активируйте запись событий входа. Можно настроить уведомления на почту или Slack, чтобы сразу получать оповещения о подозрительных действиях.
Дополнительные улучшения и советы
Для повышения информативности и безопасности можно добавить следующие функции:
- Фильтрация по IP и дате — расширьте отчет, добавив фильтры для удобного поиска;
- Отправка еженедельных отчетов на email — реализуйте с помощью WP-Cron регулярную отправку сводок;
- Защита данных — ограничьте доступ к отчетам только администраторам;
- Интеграция с плагинами безопасности — например, Clearfy Pro помогает оптимизировать и обезопасить сайт.
Пример кода для отправки еженедельного отчета:
function wplogin_send_weekly_report() {
global $wpdb;
$table = $wpdb->prefix . 'wplogin_logins';
$last_week = date('Y-m-d H:i:s', strtotime('-7 days'));
$results = $wpdb->get_results($wpdb->prepare(
"SELECT * FROM $table WHERE login_time >= %s ORDER BY login_time DESC",
$last_week
));
$message = "Отчет о входах за последнюю неделю:\n";
foreach ($results as $row) {
$message .= "Пользователь: {$row->user_login}, Время: {$row->login_time}, IP: {$row->user_ip}\n";
}
wp_mail(get_option('admin_email'), 'Еженедельный отчет о входах', $message);
}
if (!wp_next_scheduled('wplogin_weekly_report_hook')) {
wp_schedule_event(time(), 'weekly', 'wplogin_weekly_report_hook');
}
add_action('wplogin_weekly_report_hook', 'wplogin_send_weekly_report');Этот код отправляет администратору письмо с логами за неделю — удобно и информативно.
Итоги
Создание автоматического отчета о входах в WordPress можно реализовать как самостоятельно, написав легкий плагин с сохранением данных в базе и выводом отчета в админке, так и с помощью специализированных плагинов, которые предложат расширенный функционал и интеграции. Такой подход повышает уровень контроля над сайтом и помогает вовремя реагировать на подозрительную активность.
Для удобства и безопасности рекомендуем ознакомиться с Clearfy Pro, который помогает оптимизировать WordPress и повысить безопасность без сложных настроек.