Отслеживание активности пользователей на сайте WordPress — важная задача для администраторов и разработчиков, которые хотят понять поведение посетителей, выявить проблемные места и улучшить взаимодействие. В этой статье мы рассмотрим, как создать подробный отчет по активности пользователей с помощью кода и плагинов, а также как вывести эти данные в удобном виде.
Почему важен отчет по активности пользователей в WordPress
Отчет по активности помогает увидеть, какие страницы посещают пользователи, сколько времени проводят на сайте, какие действия совершают: отправка форм, комментарии, регистрации и т.д. Это ценно для анализа контента и UX, выявления неработающих функций и повышения конверсии.
Без специализированных инструментов WordPress не предоставляет детальной статистики. Для этого можно использовать плагины, либо реализовать собственные решения с помощью хуков и логирования.
Лучшие плагины для отслеживания активности пользователей
Рассмотрим несколько популярных и проверенных плагинов, которые помогут собрать и визуализировать данные:
- WP Activity Log — подробный лог действий пользователей, включая входы, изменения в контенте, настройки и т.д. Имеет удобный интерфейс и гибкие фильтры.
- Simple History — легкий и простой плагин, который отображает историю активности прямо в админке. Поддерживает расширения для интеграции с другими плагинами.
- Stream — мощный плагин с возможностью отслеживания изменений и действий пользователей в реальном времени, поддерживает фильтрацию и экспорт данных.
Использование плагина зачастую самый быстрый способ получить нужные данные без программирования.
Создаем собственный отчет по активности пользователей на базе кода
Если нужен кастомный отчет, который фиксирует только определенные действия, можно написать код, который будет логировать события в отдельную таблицу или мета-поля.
Шаг 1. Создание таблицы для логов
Для начала создадим таблицу в базе данных для хранения логов:
function wpplugins_create_activity_log_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpplugins_user_activity';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
action varchar(255) NOT NULL,
object_type varchar(100) DEFAULT NULL,
object_id bigint(20) DEFAULT NULL,
time datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpplugins_create_activity_log_table');Этот код нужно разместить в файле плагина или в functions.php темы. Он создаст таблицу с полями для ID пользователя, действия, типа объекта и времени.
Шаг 2. Логирование действий пользователей
Далее создадим функцию для записи в таблицу:
function wpplugins_log_user_activity($user_id, $action, $object_type = '', $object_id = 0) {
global $wpdb;
$table_name = $wpdb->prefix . 'wpplugins_user_activity';
$wpdb->insert(
$table_name,
[
'user_id' => $user_id,
'action' => $action,
'object_type' => $object_type,
'object_id' => $object_id,
'time' => current_time('mysql')
],
['%d', '%s', '%s', '%d', '%s']
);
}Теперь нужно подключить эту функцию к нужным хукам. Например, чтобы логировать вход пользователя:
add_action('wp_login', function($user_login, $user) {
wpplugins_log_user_activity($user->ID, 'login');
}, 10, 2);<Или запись комментариев:
add_action('comment_post', function($comment_ID, $comment_approved) {
$comment = get_comment($comment_ID);
if ($comment_approved) {
wpplugins_log_user_activity($comment->user_id, 'comment_posted', 'comment', $comment_ID);
}
}, 10, 2);Шаг 3. Вывод отчета в админке
Для отображения отчета создадим меню и страницу с таблицей:
function wpplugins_add_activity_page() {
add_menu_page(
'Отчет активности пользователей',
'Активность пользователей',
'manage_options',
'wpplugins-user-activity',
'wpplugins_render_activity_page',
'dashicons-analytics',
26
);
}
add_action('admin_menu', 'wpplugins_add_activity_page');
function wpplugins_render_activity_page() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpplugins_user_activity';
$results = $wpdb->get_results("SELECT * FROM $table_name ORDER BY time DESC LIMIT 100");
echo '<div class="wrap"><h1>Отчет активности пользователей</h1><table class="widefat fixed" cellspacing="0">';
echo '<thead><tr><th>ID</th><th>Пользователь</th><th>Действие</th><th>Объект</th><th>Время</th></tr></thead><tbody>';
foreach ($results as $row) {
$user_info = get_userdata($row->user_id);
$user_name = $user_info ? esc_html($user_info->user_login) : 'Гость';
echo '<tr>' .
'<td>' . esc_html($row->id) . '</td>' .
'<td>' . $user_name . '</td>' .
'<td>' . esc_html($row->action) . '</td>' .
'<td>' . esc_html($row->object_type) . ' #' . esc_html($row->object_id) . '</td>' .
'<td>' . esc_html($row->time) . '</td>' .
'</tr>';
}
echo '</tbody></table></div>';
}Расширенные возможности и интеграция с WPShop
Для улучшения функционала можно добавить фильтры по пользователям, датам и типам действий. Это позволит быстро находить нужные записи и анализировать конкретные сценарии.
Для визуализации отчетов подойдут графики на базе JavaScript-библиотек, например, Chart.js.
Если вы используете плагины от WPSHOP, такие как Expert Review для отзывов или WPCommunity для управления сообществом, можно расширить логирование, добавив события, связанные с этими плагинами.
Пример: логирование активности в Expert Review
Чтобы отследить, когда пользователь оставляет отзыв через Expert Review, добавим следующий код:
add_action('expert_review_submitted', function($review_id, $user_id) {
wpplugins_log_user_activity($user_id, 'review_submitted', 'expert_review', $review_id);
}, 10, 2);Советы по оптимизации и безопасности хранения данных активности
Логирование активности может привести к быстрому росту объема данных, поэтому важно продумывать стратегию очистки старых записей. Например, можно использовать WP Cron для удаления логов старше 6 месяцев:
function wpplugins_cleanup_old_logs() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpplugins_user_activity';
$wpdb->query($wpdb->prepare("DELETE FROM $table_name WHERE time < %s", date('Y-m-d H:i:s', strtotime('-6 months'))));
}
if (!wp_next_scheduled('wpplugins_cleanup_old_logs_event')) {
wp_schedule_event(time(), 'daily', 'wpplugins_cleanup_old_logs_event');
}
add_action('wpplugins_cleanup_old_logs_event', 'wpplugins_cleanup_old_logs');Также убедитесь, что доступ к отчетам и логам имеет только администратор или доверенные роли, чтобы защитить данные пользователей.
Заключение
Создание подробного отчета по активности пользователей в WordPress — задача, которую можно решить как с помощью готовых плагинов, так и самостоятельным кодированием. В зависимости от требований и масштаба проекта выбирайте подходящий вариант. Кастомный код дает гибкость и позволяет интегрироваться с другими плагинами и сервисами, а плагины — быстрое решение с готовым интерфейсом.