Видео трекинг в WordPress — это мощный инструмент для анализа поведения пользователей при просмотре видео. С его помощью можно узнать, какие части видео наиболее интересны, где зрители ставят на паузу, перематывают или досматривают до конца. В этой статье подробно разберём, как реализовать видео трекинг на сайте WordPress с помощью готовых плагинов и кастомного кода.
Зачем нужен видео трекинг в WordPress
Видео — это один из самых вовлекающих видов контента. Понимание того, как пользователи взаимодействуют с ним, помогает:
- Оптимизировать контент под интересы аудитории;
- Повысить вовлечённость и конверсию;
- Анализировать эффективность рекламы и обучающих курсов;
- Проводить A/B тестирование разных версий видео.
Без трекинга сложно понять, какие именно моменты видео вызывают интерес или отторжение, а значит — оптимизировать видео стратегию.
Плагины для видео трекинга в WordPress
Есть несколько решений, которые позволяют быстро внедрить трекинг видео с минимальными усилиями.
1. WP Video Analytics
Этот плагин собирает статистику по просмотрам, времени просмотра и действиям пользователя с видео, встроенными через стандартный HTML5-плеер. Он интегрируется с Google Analytics и выводит удобные отчёты в админке.
Плюсы:
- Простота установки и настройки;
- Поддержка различных форматов видео;
- Интеграция с популярными аналитическими сервисами.
2. OmniVideo с модулем аналитики
Если вы используете для видео плеер OmniVideo, можно подключить модуль аналитики, который ведёт детальный трекинг и предоставляет расширенные отчёты. Также можно настроить события для Google Tag Manager.
Плюсы:
- Полная интеграция с плеером;
- Гибкие настройки событий;
- Поддержка мобильных устройств.
Кастомный видео трекинг с помощью JavaScript и PHP
Если вы хотите реализовать своё решение с учётом специфики сайта, можно написать собственный код трекинга. Рассмотрим пример, как это сделать на базе HTML5 видео и AJAX.
Шаг 1. Добавляем видео с уникальным идентификатором
<video id="wpvideo_player" width="640" height="360" controls>
<source src="/wp-content/uploads/video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>Шаг 2. Отслеживаем события видео на клиенте
Создадим JavaScript для фиксации ключевых событий: play, pause, ended, timeupdate. Для экономии запросов отправлять данные будем через определённые интервалы.
document.addEventListener('DOMContentLoaded', function() {
const video = document.getElementById('wpvideo_player');
let lastSentTime = 0;
function wpvideo_sendEvent(eventType, currentTime) {
fetch('/wp-admin/admin-ajax.php?action=wpvideo_track_video', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': wpvideo_vars.nonce
},
body: JSON.stringify({
event: eventType,
time: currentTime
})
});
}
video.addEventListener('play', function() {
wpvideo_sendEvent('play', video.currentTime);
});
video.addEventListener('pause', function() {
wpvideo_sendEvent('pause', video.currentTime);
});
video.addEventListener('ended', function() {
wpvideo_sendEvent('ended', video.currentTime);
});
video.addEventListener('timeupdate', function() {
if (video.currentTime - lastSentTime >= 10) { // Отправляем раз в 10 секунд
wpvideo_sendEvent('timeupdate', video.currentTime);
lastSentTime = video.currentTime;
}
});
});Шаг 3. Обработка AJAX-запросов на сервере
Добавим в functions.php или свой плагин обработчик для сохранения данных трекинга.
add_action('wp_ajax_wpvideo_track_video', 'wpvideo_handle_video_tracking');
add_action('wp_ajax_nopriv_wpvideo_track_video', 'wpvideo_handle_video_tracking');
function wpvideo_handle_video_tracking() {
check_ajax_referer('wpvideo_nonce', 'security');
$input = json_decode(file_get_contents('php://input'), true);
$event = sanitize_text_field($input['event'] ?? '');
$time = floatval($input['time'] ?? 0);
$user_id = get_current_user_id();
if (!$event) {
wp_send_json_error('No event specified');
}
global $wpdb;
$table = $wpdb->prefix . 'wpvideo_tracking';
$wpdb->insert($table, [
'user_id' => $user_id,
'event' => $event,
'time' => $time,
'created_at' => current_time('mysql')
]);
wp_send_json_success('Event recorded');
}Шаг 4. Создаём таблицу в базе данных для хранения трекинга
При активации плагина или вручную создаём таблицу:
function wpvideo_create_tracking_table() {
global $wpdb;
$table = $wpdb->prefix . 'wpvideo_tracking';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
user_id bigint(20) unsigned NOT NULL DEFAULT 0,
event varchar(50) NOT NULL,
time float NOT NULL,
created_at datetime NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpvideo_create_tracking_table');Отображение и анализ видео трекинга
После накопления данных важно уметь их визуализировать. Для этого можно:
- Создать страницу с графиками на базе Chart.js, выводящими данные из таблицы;
- Экспортировать данные в CSV для анализа в Excel или Google Sheets;
- Интегрировать с Google Data Studio через Google Sheets.
Пример простого запроса к базе для подсчёта количества событий ended:
global $wpdb;
$table = $wpdb->prefix . 'wpvideo_tracking';
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM $table WHERE event = %s",
'ended'
));
echo 'Количество досмотров до конца: ' . intval($count);Рекомендации по оптимизации видео трекинга
Для минимизации нагрузки и получения точных данных учтите следующие моменты:
- Отправляйте события не слишком часто (например, раз в 10 секунд);
- Используйте nonce для безопасности AJAX-запросов;
- Сохраняйте только необходимые данные, чтобы не перегружать базу;
- Регулярно архивируйте и очищайте старые данные;
- Оптимизируйте запросы к базе и используйте индексы.
Также полезно подключить к WordPress плагин Clearfy Pro, который поможет оптимизировать работу сайта при увеличении объёма аналитики и трекинга, а для вывода аналитики можно использовать WPCommunity для удобного интерфейса админки.