Отслеживание активности пользователей на сайте WordPress — важная задача для администраторов и менеджеров контента. Подробный отчет позволяет анализировать поведение посетителей, выявлять популярные разделы и контролировать безопасность. В этой статье мы рассмотрим, как создать детальный отчет по активности пользователей с помощью готовых плагинов, а также напишем собственный код для сбора и вывода информации.
Почему важно вести учет активности пользователей в WordPress
Отслеживание действий пользователей помогает:
- Понимать, какие страницы и записи наиболее популярны;
- Отслеживать изменения контента и действия редакторов;
- Обеспечивать безопасность сайта, контролируя подозрительную активность;
- Анализировать поведение клиентов для улучшения UX и маркетинга.
Без учета активности сложно понять, что работает на сайте, а что нужно менять.
Использование плагинов для отчетов активности пользователей
Существует несколько надежных плагинов, которые помогут быстро организовать сбор данных и отображение отчетов:
1. WP Activity Log
Один из самых популярных плагинов для мониторинга. Позволяет отслеживать логины, изменения в записях, действия с плагинами и многое другое. В бесплатной версии доступны основные функции, а PRO-версия расширяет возможности отчетности.
Особенности:
- Подробные логи событий с фильтрами;
- Настраиваемые уведомления на email;
- Интеграция с WooCommerce, bbPress и другими.
Скачать и узнать больше: WP Activity Log на WPSHOP
2. Simple History
Легкий в использовании плагин для ведения истории действий админов и редакторов. Отображает логи прямо в админке, что удобно для быстрого анализа.
- Отслеживает изменения постов, пользовательские входы и ошибки;
- Поддерживает сторонние плагины;
- Простой интерфейс без лишних настроек.
Подробнее: Simple History на WPSHOP
Создание собственного решения для сбора активности
Если нужно гибкое и точное решение без перегрузки плагинами, можно написать собственный код для логирования активности. Рассмотрим пример, как записывать события входа пользователей и изменения постов в отдельную таблицу базы данных.
Создание таблицы для хранения логов
Добавим функцию для создания таблицы при активации плагина или темы:
function wppartner_create_activity_log_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wppartner_activity_log';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT(20) UNSIGNED NOT NULL,
event_type VARCHAR(100) NOT NULL,
event_data TEXT,
event_time DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wppartner_create_activity_log_table' );Эта таблица будет хранить ID пользователя, тип события, дополнительные данные и время.
Логирование входа пользователя
Используем хук wp_login для записи события входа:
function wppartner_log_user_login( $user_login, $user ) {
global $wpdb;
$table_name = $wpdb->prefix . 'wppartner_activity_log';
$wpdb->insert(
$table_name,
[
'user_id' => $user->ID,
'event_type' => 'login',
'event_data' => 'Пользователь вошел под логином: ' . $user_login,
'event_time' => current_time( 'mysql' )
]
);
}
add_action( 'wp_login', 'wppartner_log_user_login', 10, 2 );Логирование изменений постов
Отслеживаем публикацию и обновление записей через хук save_post:
function wppartner_log_post_changes( $post_id, $post, $update ) {
if ( wp_is_post_revision( $post_id ) ) {
return; // Игнорируем ревизии
}
global $wpdb;
$table_name = $wpdb->prefix . 'wppartner_activity_log';
$user_id = get_current_user_id();
$action = $update ? 'обновлен' : 'создан';
$event_data = sprintf('Пост ID %d был %s пользователем ID %d', $post_id, $action, $user_id);
$wpdb->insert(
$table_name,
[
'user_id' => $user_id,
'event_type' => 'post_change',
'event_data' => $event_data,
'event_time' => current_time( 'mysql' )
]
);
}
add_action( 'save_post', 'wppartner_log_post_changes', 10, 3 );Отображение отчета активности в админке WordPress
Чтобы выводить собранные данные удобно, создадим страницу в меню админки с таблицей событий.
function wppartner_add_activity_log_page() {
add_menu_page(
'Отчет активности',
'Активность пользователей',
'manage_options',
'wppartner-activity-log',
'wppartner_render_activity_log_page',
'dashicons-list-view',
25
);
}
add_action( 'admin_menu', 'wppartner_add_activity_log_page' );
function wppartner_render_activity_log_page() {
global $wpdb;
$table_name = $wpdb->prefix . 'wppartner_activity_log';
$logs = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY event_time DESC LIMIT 100" );
echo '<div class="wrap"><h1>Отчет активности пользователей</h1>';
echo '<table class="widefat fixed"><thead><tr><th>ID</th><th>Пользователь</th><th>Тип события</th><th>Описание</th><th>Время</th></tr></thead><tbody>';
foreach ( $logs as $log ) {
$user_info = get_userdata( $log->user_id );
$user_name = $user_info ? $user_info->user_login : 'Неизвестный';
echo "<tr><td>{$log->id}</td><td>{$user_name}</td><td>{$log->event_type}</td><td>{$log->event_data}</td><td>{$log->event_time}</td></tr>";
}
echo '</tbody></table></div>';
}Этот простой интерфейс позволяет просматривать последние 100 событий активности с основными данными.
Советы по улучшению и расширению отчетов активности
Для более продвинутого решения можно:
- Добавить фильтры по типу события, пользователям и датам;
- Интегрировать отправку уведомлений о подозрительной активности;
- Логировать дополнительные действия — создание комментариев, смена ролей, загрузка файлов;
- Использовать WP_Query для формирования более сложных отчетов;
- Оптимизировать таблицу и архивировать старые данные для производительности.
Также можно рассмотреть плагины из набора WPSHOP, например, Expert Review, которые помогают собирать отзывы и активность пользователей в удобном виде.
Заключение
Создание подробного отчета по активности пользователей — задача, которая помогает лучше понимать аудиторию и обеспечивать безопасность сайта на WordPress. Выбор между готовыми плагинами и собственным кодом зависит от потребностей и ресурсов. В любом случае, правильная организация логирования и отчетности приносит большую пользу для управления сайтом.