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