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

Почему важен автоматический отчет по использованию лицензий 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 — мощный инструмент для создания отчетов и аналитики прямо в админке.

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

Рекомендации по безопасности и производительности

При работе с отчетами и пользовательскими данными обязательно учитывайте:

  • Права доступа — показывайте отчеты только администраторам и доверенным лицам.
  • Оптимизацию запросов — используйте индексы в базе данных и не загружайте слишком большие объемы данных за один запрос.
  • Кэширование — для сложных отчетов можно использовать кэширование результата, чтобы снизить нагрузку на сервер.
  • Обработку личных данных — соблюдайте требования законодательства по защите персональных данных.

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

Как создать уникальный лицензионный ключ для WordPress плагина
01.11.2025
Как установить ограничение на количество активаций лицензии WordPress плагинов по ролям пользователей
12.04.2026
Решение проблем с активацией лицензий WooCommerce после смены домена
21.05.2026
Решение проблем с автообновлениями WooCommerce плагинов при активации лицензий
11.05.2026
Как создать автоматический отчет об использовании лицензий WordPress плагинов
09.01.2026