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

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

Почему автоматический отзыв лицензий по срокам важен

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

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

Основные подходы к реализации отзыва лицензии

Существует несколько способов реализовать автоматический отзыв лицензий в WordPress плагинах:

  • Проверка срока действия при каждом запросе плагина к серверу лицензий.
  • Автоматическое удаление или деактивация лицензии по cron-задаче.
  • Ограничение доступа к функциям плагина через локальную проверку срока лицензии.

Чаще всего используют комбинацию серверной проверки и локальной логики в плагине для максимальной надежности.

Пример cron-задачи для отзыва лицензий

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

function wplicense_check_expired_licenses() {
    global $wpdb;
    $today = current_time('Y-m-d');
    $table = $wpdb->prefix . 'wplicenses';
    // Получаем все лицензии с истекшим сроком
    $expired = $wpdb->get_results($wpdb->prepare(
        "SELECT id FROM $table WHERE expiry_date < %s AND status = 'active'",
        $today
    ));
    if ($expired) {
        foreach ($expired as $license) {
            // Обновляем статус лицензии на 'revoked'
            $wpdb->update($table, ['status' => 'revoked'], ['id' => $license->id]);
        }
    }
}
// Регистрируем cron событие
if (!wp_next_scheduled('wplicense_daily_expiry_check')) {
    wp_schedule_event(time(), 'daily', 'wplicense_daily_expiry_check');
}
add_action('wplicense_daily_expiry_check', 'wplicense_check_expired_licenses');

Этот код проверяет таблицу с лицензиями, которых срок действия истек, и меняет их статус на "revoked". Можно дополнительно уведомлять пользователей по email о деактивации.

Проверка лицензии в плагине с учетом статуса и срока

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

function wplicense_validate_license($license_key) {
    $response = wp_remote_post('https://example.com/api/check_license', [
        'body' => [
            'license_key' => $license_key
        ]
    ]);
    if (is_wp_error($response)) {
        return false; // Ошибка связи с сервером
    }
    $data = json_decode(wp_remote_retrieve_body($response));
    if ($data->status !== 'active') {
        return false; // Лицензия отозвана или неактивна
    }
    $expiry = strtotime($data->expiry_date);
    if ($expiry < time()) {
        return false; // Лицензия истекла
    }
    return true; // Лицензия валидна
}

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

Дополнительные инструменты для управления лицензиями

Для упрощения работы с лицензиями рекомендуем использовать специализированные плагины и сервисы:

  • Clearfy Pro – плагин для оптимизации и защиты WordPress, включает инструменты по управлению лицензиями.
  • Expert Review – поможет автоматизировать сбор отзывов и анализировать использование лицензий.

Также стоит рассмотреть интеграцию с REST API для более гибкой работы с лицензиями и уведомлениями.

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

При реализации автоматического отзыва лицензий важно обеспечить безопасность передачи данных и предотвращение обхода проверки со стороны клиентов.

Используйте HTTPS для всех запросов к серверу лицензий, шифруйте ключи и данные, применяйте nonce и проверку прав пользователей в админке. Локально не храните открытые ключи и проверяйте лицензии как можно чаще.

Контроль частоты проверок и кеширование

Частые запросы к серверу лицензий могут нагрузить сервер и замедлить работу плагина. Организуйте кеширование результатов проверки, например, на 1 час, чтобы снизить нагрузку.

function wplicense_check_license_cached($license_key) {
    $cache_key = 'wplicense_license_' . md5($license_key);
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }
    $valid = wplicense_validate_license($license_key);
    set_transient($cache_key, $valid, HOUR_IN_SECONDS);
    return $valid;
}

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

Как создать автоматический отзыв лицензий WordPress плагинов по шаблонам
30.03.2026
Решение проблем с автообновлениями WooCommerce плагинов при активации лицензий
07.05.2026
Как сделать отзыв лицензии в WordPress плагине с использованием REST API
18.12.2025
Решение проблем с разграничением доступа к WooCommerce по лицензии
07.06.2026
Как сделать автотестирование лицензий WordPress плагинов
05.01.2026