Почему важен автоматический отчет по использованию лицензий WordPress плагинов
Владельцы и разработчики WordPress плагинов часто сталкиваются с необходимостью отслеживать, кто и как использует их лицензии. Ручной сбор данных занимает много времени, а ошибки приводят к неправильной оценке активаций и возможным злоупотреблениям. Автоматизация отчетов позволяет получать актуальную информацию быстро и без ошибок, что помогает контролировать количество лицензионных активаций, выявлять подозрительную активность и планировать обновления и поддержку.
Отчет с распределением по пользователям особенно полезен для понимания, какие именно клиенты активно используют продукт, а какие — нет. Это позволяет принимать решения о продлении лицензий, предоставлении скидок или отключении неактивных ключей.
Кроме того, грамотная система отчетности повышает доверие пользователей и упрощает взаимодействие с клиентами, предоставляя им прозрачную статистику использования.
Основные требования к системе отчетности
Для создания эффективного отчета по использованию лицензий необходимо:
- Собирать данные об активациях лицензий с привязкой к идентификаторам пользователей WordPress.
- Обеспечить хранение данных в базе данных с возможностью удобного выборочного поиска и фильтрации.
- Автоматически формировать отчет в удобном формате — например, CSV или PDF, а также выводить данные в админ-панели.
- Обеспечить возможность планирования генерации отчетов с помощью WP-Cron или другого средства автоматизации.
- Защищать отчет от несанкционированного доступа, ограничивая просмотр только администраторам.
Пример создания базы данных для хранения активаций
Для хранения данных используем отдельную таблицу в базе данных WordPress. Ниже пример функции, которая создаст таблицу при активации плагина:
function wplicense_create_activation_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wplicense_activations';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
license_key varchar(255) NOT NULL,
activated_at datetime NOT NULL,
ip_address varchar(100) NOT NULL,
PRIMARY KEY (id),
KEY user_id (user_id),
KEY license_key (license_key)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wplicense_create_activation_table' );Эта таблица хранит ID пользователя, лицензионный ключ, дату активации и IP-адрес, откуда была выполнена активация. Такая структура позволяет быстро получать статистику по пользователям и лицензиям.
Сбор данных об активациях лицензий
При активации лицензии в плагине необходимо сохранять данные в таблицу. Вот пример функции для записи информации об активации:
function wplicense_log_activation( $user_id, $license_key ) {
global $wpdb;
$table_name = $wpdb->prefix . 'wplicense_activations';
$wpdb->insert(
$table_name,
[
'user_id' => $user_id,
'license_key' => $license_key,
'activated_at' => current_time( 'mysql' ),
'ip_address' => $_SERVER['REMOTE_ADDR'],
],
[ '%d', '%s', '%s', '%s' ]
);
}Вызывайте эту функцию при успешной активации лицензии в вашем плагине, передавая ID пользователя и ключ лицензии.
Генерация отчета с распределением по пользователям
Для удобного просмотра отчетов создадим страницу в админ-панели, где выведем статистику. Ниже пример функции, которая выводит таблицу с количеством активаций по каждому пользователю:
function wplicense_display_activation_report() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Доступ запрещен' );
}
global $wpdb;
$table_name = $wpdb->prefix . 'wplicense_activations';
$results = $wpdb->get_results( "SELECT user_id, COUNT(*) as activations FROM $table_name GROUP BY user_id" );
echo '<h2>Отчет по использованию лицензий</h2>';
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr><th>Пользователь</th><th>Количество активаций</th></tr></thead>';
echo '<tbody>';
foreach ( $results as $row ) {
$user_info = get_userdata( $row->user_id );
$user_name = $user_info ? $user_info->user_login : 'Неизвестный пользователь';
echo "<tr><td>" . esc_html( $user_name ) . "</td><td>" . intval( $row->activations ) . "</td></tr>";
}
echo '</tbody></table>';
}
// Добавление страницы в меню
function wplicense_add_admin_menu() {
add_menu_page(
'Отчет по лицензиям',
'Отчет лицензий',
'manage_options',
'wplicense-report',
'wplicense_display_activation_report'
);
}
add_action( 'admin_menu', 'wplicense_add_admin_menu' );Эта страница позволит администраторам быстро видеть, сколько активаций у каждого пользователя, что облегчит управление и анализ.
Автоматизация создания и отправки отчетов по расписанию
Чтобы получать отчеты автоматически, можно использовать WP-Cron. Например, настроим ежедневный запуск задачи, которая будет генерировать CSV-файл с отчетом и отправлять его на email.
Регистрация Cron задачи:
function wplicense_schedule_daily_report() {
if ( ! wp_next_scheduled( 'wplicense_daily_report_event' ) ) {
wp_schedule_event( time(), 'daily', 'wplicense_daily_report_event' );
}
}
add_action( 'wp', 'wplicense_schedule_daily_report' );Обработчик задачи:
function wplicense_send_daily_report() {
global $wpdb;
$table_name = $wpdb->prefix . 'wplicense_activations';
$results = $wpdb->get_results( "SELECT user_id, license_key, activated_at, ip_address FROM $table_name ORDER BY activated_at DESC" );
$csv = "User ID,License Key,Activated At,IP Address\n";
foreach( $results as $row ) {
$csv .= "{$row->user_id},{$row->license_key},{$row->activated_at},{$row->ip_address}\n";
}
$to = get_option( 'admin_email' );
$subject = 'Ежедневный отчет по активациям лицензий';
$headers = [ 'Content-Type: text/plain; charset=UTF-8' ];
wp_mail( $to, $subject, $csv, $headers );
}
add_action( 'wplicense_daily_report_event', 'wplicense_send_daily_report' );Теперь каждый день администратор будет получать письмо с актуальной информацией по лицензиям.
Использование плагинов для расширения функционала отчетов
Если не хочется писать все самостоятельно, можно воспользоваться плагинами, которые облегчают создание отчетов и управление лицензиями. Например:
- Clearfy Pro — оптимизация и расширение возможностей WordPress, включая инструменты для работы с лицензиями и отчетами.
- WPRemark — мощный инструмент для создания отчетов и аналитики прямо в админке.
Эти плагины можно интегрировать с вашей системой лицензирования для получения более удобного и визуально привлекательного отчета.
Рекомендации по безопасности и производительности
При работе с отчетами и пользовательскими данными обязательно учитывайте:
- Права доступа — показывайте отчеты только администраторам и доверенным лицам.
- Оптимизацию запросов — используйте индексы в базе данных и не загружайте слишком большие объемы данных за один запрос.
- Кэширование — для сложных отчетов можно использовать кэширование результата, чтобы снизить нагрузку на сервер.
- Обработку личных данных — соблюдайте требования законодательства по защите персональных данных.
Также регулярно проверяйте логи и отчеты на предмет аномалий и подозрительной активности, чтобы своевременно реагировать на возможные нарушения.