Ведение учета активности пользователей на сайте WordPress — задача, важная для многих проектов: интернет-магазинов, образовательных платформ, корпоративных порталов. В этой статье мы подробно рассмотрим, как создать собственный отчет по активности пользователей, который поможет отслеживать действия, понимать поведение посетителей и принимать обоснованные решения.
Почему важно отслеживать активность пользователей в WordPress
Активность пользователей — это любые действия, которые они совершают на сайте: вход в систему, просмотр страниц, публикация комментариев, оформление заказов и т.д. Сбор таких данных дает несколько преимуществ:
- Аналитика поведения: вы узнаете, какие разделы наиболее популярны и какие действия совершают пользователи.
- Безопасность: выявление подозрительной активности (например, многократные неудачные попытки входа).
- Оптимизация сайта: понимание узких мест и точек выхода пользователей.
Для реализации такой системы можно использовать готовые плагины, но зачастую они либо слишком громоздкие, либо не подходят под конкретные задачи. Поэтому мы создадим собственное решение с примером кода.
Использование плагина WP Activity Log для расширенного мониторинга
Если нужна комплексная система мониторинга с удобным интерфейсом, рекомендую плагин WP Activity Log. Он позволяет отслеживать:
- Входы и выходы пользователей
- Изменения в записях и страницах
- Изменения настроек
- Действия плагинов и тем
Плагин имеет удобный интерфейс отчетов и возможность фильтрации по пользователям, датам и типам активности.
Создание собственного решения для отчета активности пользователей
Рассмотрим, как создать простой плагин, который будет записывать ключевые действия пользователей в отдельную таблицу базы данных и выводить отчет в админке.
1. Создаем таблицу для хранения логов
Для начала нужно создать таблицу, где будут храниться записи об активности. Используем хуки активации плагина:
function wpapp_create_activity_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpapp_user_activity';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
action varchar(100) NOT NULL,
description text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpapp_create_activity_table');Эта таблица будет хранить ID пользователя, действие, описание и дату события.
2. Записываем действия пользователей
Добавим функцию для записи в базу, а затем подключим ее к нескольким хукам:
function wpapp_log_user_activity($user_id, $action, $description) {
global $wpdb;
$table_name = $wpdb->prefix . 'wpapp_user_activity';
$wpdb->insert(
$table_name,
[
'user_id' => $user_id,
'action' => $action,
'description' => $description,
'created_at' => current_time('mysql')
]
);
}
// Пример записи при входе пользователя
function wpapp_on_user_login($user_login, $user) {
wpapp_log_user_activity($user->ID, 'login', 'Пользователь вошел в систему');
}
add_action('wp_login', 'wpapp_on_user_login', 10, 2);
// Пример записи при публикации записи
function wpapp_on_post_publish($ID, $post) {
wpapp_log_user_activity($post->post_author, 'publish_post', 'Опубликована запись ID ' . $ID);
}
add_action('publish_post', 'wpapp_on_post_publish', 10, 2);Можно расширить список отслеживаемых действий по своему усмотрению.
3. Вывод отчета в админке WordPress
Создадим страницу в админке для отображения отчета с фильтрами:
function wpapp_add_admin_menu() {
add_menu_page(
'Отчет активности',
'Активность пользователей',
'manage_options',
'wpapp-user-activity',
'wpapp_render_report_page',
'dashicons-analytics',
20
);
}
add_action('admin_menu', 'wpapp_add_admin_menu');
function wpapp_render_report_page() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpapp_user_activity';
$user_id = isset($_GET['user_id']) ? intval($_GET['user_id']) : 0;
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';
$where = [];
if ($user_id) {
$where[] = $wpdb->prepare('user_id = %d', $user_id);
}
if ($action) {
$where[] = $wpdb->prepare('action = %s', $action);
}
$where_sql = '';
if ($where) {
$where_sql = 'WHERE ' . implode(' AND ', $where);
}
$results = $wpdb->get_results("SELECT * FROM $table_name $where_sql ORDER BY created_at DESC LIMIT 100");
echo '<h1>Отчет по активности пользователей</h1>';
// Форма фильтрации
echo '<form method="GET">';
echo '<input type="hidden" name="page" value="wpapp-user-activity" />';
echo '<input type="number" name="user_id" placeholder="ID пользователя" value="' . esc_attr($user_id) . '" /> ';
echo '<input type="text" name="action" placeholder="Действие" value="' . esc_attr($action) . '" /> ';
echo '<input type="submit" value="Фильтровать" />';
echo '</form>';
if ($results) {
echo '<table class="wp-list-table widefat fixed striped">';
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 ? $user_info->user_login : 'Неизвестен';
echo '<tr>';
echo '<td>' . esc_html($row->id) . '</td>';
echo '<td>' . esc_html($user_name) . '</td>';
echo '<td>' . esc_html($row->action) . '</td>';
echo '<td>' . esc_html($row->description) . '</td>';
echo '<td>' . esc_html($row->created_at) . '</td>';
echo '</tr>';
}
echo '</tbody></table>';
} else {
echo '<p>Данных не найдено.</p>';
}
}Такой отчет поможет быстро получить данные по активности и выявить ключевые моменты.
Дополнительные рекомендации и расширение функционала
1. Кэширование и пагинация. При большом объеме данных стоит добавить пагинацию и кэшировать результаты для скорости.
2. Расширение списка отслеживаемых действий. Можно добавить регистрацию, изменение пароля, комментарии, заказы (для WooCommerce) и другие события.
3. Интеграция с аналитикой. Для глубокого анализа можно экспортировать данные в CSV или подключить к Google Analytics.
4. Использование готовых решений. Если нужно быстро, посмотрите на Expert Review — плагин с расширенным функционалом для мониторинга и отзывов пользователей.
Заключение
Создание подробного отчета по активности пользователей в WordPress — задача, которую можно решить как с помощью готовых плагинов, так и собственными силами. Приведенный пример кода — основа для построения более сложной системы, адаптированной под ваши нужды. Такой подход позволит глубже понять аудиторию и повысить эффективность сайта.