Автоматический отчет об использовании лицензий 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 для обновления и отображения данных в реальном времени, а также кешировать результаты для снижения нагрузки.

Решение проблемы с дублирующимися лицензиями в подписках WooCommerce
14.05.2026
Решение проблем с разграничением доступа к WooCommerce по лицензии
07.06.2026
Решение проблем с кешированием при активации лицензий WordPress плагинов
20.07.2026
Как защитить лицензии WordPress плагинов от пиратского использования
26.01.2026
Решение проблем с активацией лицензий WordPress плагинов при использовании разных средств кеширования
31.07.2026