Как создать плагин аналитики просмотров записей в WordPress

Введение

Плагин 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-трекинг с учётом ухода пользователя, админка для просмотра статистики. Структуру можно расширить: добавить экспорт, графики, уведомления о популярных записях.

Комментарии

Пока нет комментариев. Станьте первым!

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *