Автоматический отчет об использовании лицензий WordPress плагинов с распределением по пользователям

Для разработчиков WordPress плагинов с системой лицензирования важно не только выдавать лицензии, но и иметь прозрачную статистику их использования. Это помогает отслеживать активные пользователи, выявлять подозрительную активность и принимать решения по поддержке и развитию продукта.

Зачем нужен автоматический отчет об использовании лицензий?

Ручной сбор данных по лицензиям неудобен и подвержен ошибкам. Автоматизация позволяет:

  • Вовремя отслеживать количество активных лицензий;
  • Определять нерегулярное или подозрительное использование;
  • Отслеживать распределение лицензий по пользователям, сайтам и периодам;
  • Упрощать поддержку клиентов с помощью детальной информации.

Особенно полезно, если лицензии привязаны к разным доменам и аккаунтам, и нужно анализировать активность в разрезе каждого клиента.

Основные данные для отчета об использовании лицензий

Чтобы сформировать отчет, нужно собрать следующие данные:

  • ID лицензии;
  • Пользователь, которому выдана лицензия (ID и email);
  • Привязанные домены или сайты;
  • Дата активации и последнего использования;
  • Статус лицензии (активна, просрочена, отозвана);
  • Количество активаций и ограничение по ним;
  • IP адреса и геолокация (по желанию для анализа).

В системе лицензирования желательно хранить эти данные в отдельной таблице базы данных или в метаданных пользователей/плагинов.

Пример структуры таблицы для хранения данных по лицензиям

CREATE TABLE wp_licences_usage ( 
  licence_id VARCHAR(100) PRIMARY KEY, 
  user_id BIGINT UNSIGNED NOT NULL, 
  domains TEXT NOT NULL, 
  activation_date DATETIME NOT NULL, 
  last_used DATETIME NOT NULL, 
  status VARCHAR(20) NOT NULL, 
  activations_count INT DEFAULT 0, 
  ip_addresses TEXT NULL
);

Здесь поле domains может хранить список доменов через запятую или в JSON формате. Аналогично ip_addresses можно хранить в JSON, если нужно сохранять историю.

Как автоматически собирать данные об использовании лицензий?

При каждой проверке лицензии на стороне плагина или сервера нужно обновлять статистику в таблице. Например, при REST API запросе активации или проверки лицензии:

function wplicense_update_usage_report($licence_id, $user_id, $domain, $ip) {
    global $wpdb;
    $table = $wpdb->prefix . 'licences_usage';

    $now = current_time('mysql');

    $usage = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table WHERE licence_id = %s", $licence_id));

    if ($usage) {
        $domains = json_decode($usage->domains, true);
        if (!in_array($domain, $domains)) {
            $domains[] = $domain;
        }
        $ips = json_decode($usage->ip_addresses, true);
        if (!in_array($ip, $ips)) {
            $ips[] = $ip;
        }
        $wpdb->update(
            $table,
            [
                'last_used' => $now,
                'activations_count' => $usage->activations_count + 1,
                'domains' => wp_json_encode($domains),
                'ip_addresses' => wp_json_encode($ips),
                'status' => 'active'
            ],
            ['licence_id' => $licence_id]
        );
    } else {
        $wpdb->insert(
            $table,
            [
                'licence_id' => $licence_id,
                'user_id' => $user_id,
                'domains' => wp_json_encode([$domain]),
                'activation_date' => $now,
                'last_used' => $now,
                'status' => 'active',
                'activations_count' => 1,
                'ip_addresses' => wp_json_encode([$ip])
            ]
        );
    }
}

Данную функцию нужно вызывать при каждом успешном использовании лицензии — при активации плагина, валидации лицензии через API и т.п.

Генерация отчета и вывод в админке

На базе собранных данных удобно сделать в админке отчет с фильтрами по пользователям, дате, статусу лицензии.

Пример простейшей функции для получения отчета:

function wplicense_get_usage_report($args = []) {
    global $wpdb;
    $table = $wpdb->prefix . 'licences_usage';

    $query = "SELECT * FROM $table WHERE 1=1";
    $params = [];

    if (!empty($args['user_id'])) {
        $query .= " AND user_id = %d";
        $params[] = $args['user_id'];
    }
    if (!empty($args['status'])) {
        $query .= " AND status = %s";
        $params[] = $args['status'];
    }
    if (!empty($args['date_from'])) {
        $query .= " AND last_used >= %s";
        $params[] = $args['date_from'];
    }
    if (!empty($args['date_to'])) {
        $query .= " AND last_used <= %s";
        $params[] = $args['date_to'];
    }

    if (!empty($params)) {
        $results = $wpdb->get_results($wpdb->prepare($query, ...$params));
    } else {
        $results = $wpdb->get_results($query);
    }

    return $results;
}

Данные можно отобразить в таблице с пагинацией и поиском, используя стандартные WP List Table или сторонние библиотеки.

Пример интеграции с плагином Clearfy Pro для оптимизации отчетов

Плагин Clearfy Pro помогает оптимизировать работу сайта, что полезно при генерации больших отчетов. Благодаря Clearfy можно отключить ненужные скрипты и запросы, ускорив загрузку страницы с отчетами.

Выводы и рекомендации

Автоматический отчет лицензий — мощный инструмент для контроля и аналитики. Главное — продумать структуру хранения данных и интеграцию с системой проверки лицензий. Не забывайте об удобстве представления данных в админке и безопасности доступа к отчетам.

Если вы разрабатываете собственную систему лицензирования, рекомендуем использовать REST API и AJAX для обновления и отображения данных в реальном времени, а также кешировать результаты для снижения нагрузки.

Решение проблем с активацией лицензий WordPress при использовании разных средств кеширования
13.06.2026
Как создать собственную систему активации лицензий для WordPress плагинов
11.12.2025
Оптимальные настройки WordPress для управления лицензиями плагинов
02.12.2025
Как сделать отзыв лицензии в WordPress плагине с использованием REST API
18.12.2025
Как удалить записи по типам со стороны базы данных WordPress
18.02.2026