Отслеживание активности пользователей на сайте WordPress — важная задача для администраторов и разработчиков, особенно если вы управляете многопользовательским ресурсом или продаете услуги. В этой статье разберем, как создать автоматический отчет по активности пользователей с помощью кода и рекомендуемых плагинов, а также как отправлять этот отчет на почту или сохранять в базе для дальнейшего анализа.
Зачем нужен отчет по активности пользователей в WordPress
Отчет по активности позволяет мониторить действия пользователей: входы, публикации, комментарии, изменения профиля и другие события. Это помогает:
- Отслеживать вовлеченность и активность аудитории;
- Обнаруживать подозрительную активность и возможные взломы;
- Оптимизировать контент и функционал под поведение пользователей;
- Автоматизировать администрирование и принимать решения на основе данных.
Реализовать такой отчет можно разными способами — от использования готовых плагинов до кастомной разработки с использованием хуков WordPress.
Использование плагинов для сбора данных об активности
Если вам нужна быстрая и готовая к работе система, рассмотрите следующие проверенные плагины:
- WP User Activity — фиксирует действия пользователей, позволяет просматривать логи и экспортировать их;
- Expert Review — плагин с отчетами и аналитикой, подходит для оценки эффективности пользователей;
- WPRemark — инструмент для сбора отзывов и действий с возможностью создания отчетов.
Однако если нужна кастомизация или минимизация нагрузки, лучше использовать собственные решения на базе хуков WordPress.
Создаем базовую систему сбора активности с помощью кода
Для начала создадим таблицу в базе данных для хранения активности. Используем функцию активации плагина или темы:
function wpbox_create_activity_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpbox_user_activity';
$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,
activity_type varchar(100) NOT NULL,
activity_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
activity_data text DEFAULT NULL,
PRIMARY KEY (id),
KEY user_id (user_id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpbox_create_activity_table' );
Эта таблица будет хранить ID пользователя, тип активности, время и дополнительные данные.
Логируем входы пользователей
Используем хук wp_login, чтобы записывать логин в нашу таблицу:
function wpbox_log_user_login($user_login, $user) {
global $wpdb;
$table = $wpdb->prefix . 'wpbox_user_activity';
$wpdb->insert(
$table,
[
'user_id' => $user->ID,
'activity_type' => 'login',
'activity_time' => current_time('mysql'),
'activity_data' => 'Пользователь вошел в систему'
]
);
}
add_action('wp_login', 'wpbox_log_user_login', 10, 2);
Отслеживаем создание и обновление постов
Для отслеживания публикаций используем хук save_post:
function wpbox_log_post_save($post_ID, $post, $update) {
if (wp_is_post_revision($post_ID)) return;
global $wpdb;
$table = $wpdb->prefix . 'wpbox_user_activity';
$user_id = get_current_user_id();
$type = $update ? 'update_post' : 'create_post';
$wpdb->insert(
$table,
[
'user_id' => $user_id,
'activity_type' => $type,
'activity_time' => current_time('mysql'),
'activity_data' => 'Пост ID: ' . $post_ID . ', заголовок: ' . $post->post_title
]
);
}
add_action('save_post', 'wpbox_log_post_save', 10, 3);
Генерация и отправка отчета по активности
Теперь создадим функцию для сбора данных за нужный период и формирования отчета в виде HTML-таблицы:
function wpbox_generate_activity_report($days = 7) {
global $wpdb;
$table = $wpdb->prefix . 'wpbox_user_activity';
$date_from = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
$results = $wpdb->get_results($wpdb->prepare(
"SELECT user_id, activity_type, activity_time, activity_data FROM $table WHERE activity_time >= %s ORDER BY activity_time DESC",
$date_from
));
if (!$results) {
return '<p>За последние ' . $days . ' дней активность не зафиксирована.</p>';
}
$html = '<table border="1" cellpadding="5" cellspacing="0"><thead><tr><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 : 'Неизвестный пользователь';
$html .= '<tr>';
$html .= '<td>' . esc_html($user_name) . '</td>';
$html .= '<td>' . esc_html($row->activity_type) . '</td>';
$html .= '<td>' . esc_html($row->activity_time) . '</td>';
$html .= '<td>' . esc_html($row->activity_data) . '</td>';
$html .= '</tr>';
}
$html .= '</tbody></table>';
return $html;
}
Для автоматической отправки отчета на email администратора можно использовать WP Cron:
function wpbox_send_weekly_report() {
$report = wpbox_generate_activity_report(7);
$admin_email = get_option('admin_email');
$subject = 'Отчет по активности пользователей за неделю';
wp_mail($admin_email, $subject, $report, ['Content-Type: text/html; charset=UTF-8']);
}
if (!wp_next_scheduled('wpbox_weekly_activity_report')) {
wp_schedule_event(time(), 'weekly', 'wpbox_weekly_activity_report');
}
add_action('wpbox_weekly_activity_report', 'wpbox_send_weekly_report');
Расширение функционала: отслеживание действий в административной панели
Чтобы более детально фиксировать действия пользователей, можно использовать хук current_screen и связывать его с действиями, например, изменениями настроек или запуском определенных функций. Также полезно логировать ошибки и попытки доступа к закрытым разделам.
Для этого создайте функцию, которая будет вызываться в нужных местах и записывать события в вашу таблицу. Таким образом, вы получите полноценный аудит пользователей.
Использование сторонних сервисов и интеграция с WPShop
Если хочется расширить возможности, можно интегрировать ваш отчет с плагинами WPShop, например, Expert Review. Он позволит не только собирать данные, но и визуализировать их, а также делать подробный анализ.
Также для создания интерактивных отчетов и опросов можно использовать Quizle, чтобы получать обратную связь от пользователей и дополнять статистику.
Заключение по теме отчета активности
Создание автоматического отчета по активности пользователей — задача, которую можно решить как с помощью плагинов, так и собственным кодом. Приведенный пример — базовый каркас, который легко адаптируется под любые нужды и расширяется новыми событиями. Такой подход позволяет получить максимум информации о пользователях и повысить безопасность и качество работы сайта на WordPress.