Введение
Плагин Post Analytics собирает статистику просмотров записей блога: сколько уникальных пользователей просмотрело каждую запись, до какой части страницы они прокрутили, сколько времени провели на странице, с каких устройств и платформ заходили. В этой статье подробно описано, как создать такой плагин с нуля, чтобы любой пользователь мог повторить реализацию.
Что умеет плагин
- Подсчёт уникальных просмотров (по IP + User-Agent + дата)
- Глубина прокрутки — до скольких процентов страницы пользователь долистал
- Время на странице в секундах
- Определение устройства: мобильный, планшет, десктоп
- Определение платформы: iOS, Android, Windows, macOS, Linux
- Админка со статистикой: популярность записей, среднее время, средняя и максимальная глубина прокрутки
- Фильтр по периоду: 7, 14, 30, 90 дней
Структура плагина
Создаём папку wp-content/plugins/post-analytics/ со следующей структурой:
post-analytics/
├── post-analytics.php # Точка входа
├── includes/
│ ├── class-post-analytics-db.php # Работа с базой данных
│ ├── class-post-analytics-rest.php # REST API endpoint
│ └── class-post-analytics-admin.php # Страница статистики в админке
└── assets/
└── js/
└── post-analytics.js # Трекинг на фронтенде
Шаг 1: Главный файл плагина
Файл post-analytics.php — точка входа. Здесь объявляем плагин, подключаем зависимости, регистрируем activation hook для создания таблицы при первой активации, подключаем скрипты через wp_enqueue_script только на одиночных записях (проверка is_singular('post')). Через wp_localize_script передаём в JavaScript ID поста, URL REST API и nonce для авторизации запросов.
Шаг 2: База данных
Класс Post_Analytics_DB отвечает за хранение данных. Таблица создаётся функцией dbDelta при активации. Поля: post_id, visitor_hash (хеш от IP + User-Agent + дата для анонимной идентификации), scroll_depth (0–100%), time_seconds, device, platform, created_at. Методы: insert_view() — сохранить просмотр, get_post_stats() — статистика по одной записи, get_all_stats() — список всех записей с агрегированными данными.
rest-api">Шаг 3: REST API
Класс Post_Analytics_REST регистрирует endpoint через register_rest_route: POST /wp-json/post-analytics/v1/track. Принимает параметры: post_id, scroll_depth, time_seconds, device, platform. Проверяет, что запись существует и опубликована. Формирует visitor_hash из IP, User-Agent и текущей даты — один посетитель в день считается один раз. Сохраняет данные через Post_Analytics_DB::insert_view().
Шаг 4: JavaScript-трекинг
Скрипт post-analytics.js получает из wp_localize_script объект postAnalytics с postId, restUrl, nonce. Отслеживает:
- Глубину прокрутки — при событии
scrollи по таймеру раз в 500 мс запоминает максимальное значение (0–100%). - Время на странице — от момента загрузки до ухода.
- Уход пользователя — события
beforeunload,pagehideиvisibilitychange(когдаdocument.visibilityState === 'hidden', т.е. пользователь переключил вкладку).
При уходе отправляет данные через fetch с keepalive: true, чтобы запрос успел уйти даже при закрытии вкладки. Определяет устройство по ширине окна (mobile < 768px, tablet < 1024px, desktop) и платформу по navigator.userAgent.
Шаг 5: Админка
Класс Post_Analytics_Admin добавляет пункт меню через add_menu_page (или add_submenu_page к существующему разделу). Страница выводит таблицу: заголовок записи, уникальные просмотры, всего просмотров, средняя и максимальная глубина прокрутки (%), среднее время (сек), разбивка по устройствам и платформам. Переключатель периода: 7, 14, 30, 90 дней. Если таблица в базе не создана (например, плагин был скопирован без активации), показывается кнопка «Создать таблицу» с проверкой nonce.
Идентификация уникального посетителя
Для подсчёта уникальных просмотров без cookies используем hash от комбинации IP, User-Agent и даты. Один и тот же пользователь в один день даёт один hash — считаем его одним уникальным посетителем. Данные не содержат персональной информации, только хеш.
Термины и технологии
В статье используются термины: REST API, fetch, wp_localize_script, register_rest_route, dbDelta, User-Agent, трекинг, hash, beforeunload, visibilitychange, wp_enqueue_script, is_singular, activation hook. Все они добавлены в глоссарий — при клике на термин откроется подсказка с пояснением.
Итог
Плагин Post Analytics — полноценный пример сбора поведенческой аналитики на WordPress: база данных для хранения, REST API для приёма данных с фронтенда, JavaScript-трекинг с учётом ухода пользователя, админка для просмотра статистики. Структуру можно расширить: добавить экспорт, графики, уведомления о популярных записях.