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

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

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

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

  • Защитить авторские права и монетизировать продукт
  • Минимизировать риск использования устаревших или пиратских версий
  • Автоматизировать процессы поддержки и контроля пользователей

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

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

1. Проверка лицензии при каждом обновлении плагина

Самый простой способ — при попытке обновления плагина на сайте клиента проверять статус лицензии через API сервера лицензий. Если лицензия отозвана, обновление блокируется. Для этого в файле обновления плагина добавляют дополнительную проверку.

Пример функции для проверки статуса лицензии на сервере (с префиксом wplicense_):

function wplicense_check_license_status($license_key) {
    $response = wp_remote_post('https://wplicense.ru/api/check_license', [
        'body' => [
            'license_key' => $license_key
        ]
    ]);
    if (is_wp_error($response)) {
        return false; // Ошибка подключения
    }
    $data = json_decode(wp_remote_retrieve_body($response), true);
    return isset($data['status']) && $data['status'] === 'active';
}

Эту функцию вызывают в хук обновления плагина, чтобы разрешить или запретить обновление.

2. Регулярная проверка лицензии через cron

Если важен не только процесс обновления, но и ежедневный контроль, можно настроить WP-Cron задачу, которая будет периодически проверять статус лицензии и деактивировать плагин, если лицензия отозвана.

Для этого регистрируем cron задачу:

function wplicense_schedule_license_check() {
    if (!wp_next_scheduled('wplicense_daily_license_check')) {
        wp_schedule_event(time(), 'daily', 'wplicense_daily_license_check');
    }
}
add_action('wp', 'wplicense_schedule_license_check');

function wplicense_check_license_cron() {
    $license_key = get_option('wplicense_license_key');
    if (!$license_key || !wplicense_check_license_status($license_key)) {
        update_option('wplicense_license_status', 'revoked');
        // Можно добавить деактивацию функционала плагина
    } else {
        update_option('wplicense_license_status', 'active');
    }
}
add_action('wplicense_daily_license_check', 'wplicense_check_license_cron');

3. Отзыв лицензии по событию с сервера (webhook)

Если ваша система лицензирования поддерживает вебхуки, можно настроить сервер лицензий так, чтобы при отзыве лицензии он отправлял POST-запрос на сайт клиента. Плагин ловит этот запрос и сразу деактивирует лицензию.

Пример приема webhook-запроса:

function wplicense_handle_license_revoke() {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        status_header(405);
        exit;
    }
    $input = json_decode(file_get_contents('php://input'), true);
    if (empty($input['license_key'])) {
        status_header(400);
        exit;
    }
    $current_license = get_option('wplicense_license_key');
    if ($input['license_key'] === $current_license) {
        update_option('wplicense_license_status', 'revoked');
        // Можно добавить деактивацию плагина
    }
    status_header(200);
    exit;
}
add_action('rest_api_init', function () {
    register_rest_route('wplicense/v1', '/revoke', [
        'methods' => 'POST',
        'callback' => 'wplicense_handle_license_revoke',
        'permission_callback' => '__return_true',
    ]);
});

Реализация деактивации функционала после отзыва лицензии

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

  • Блокировка обновлений
  • Отключение премиум-функций
  • Вывод сообщения в админке

Пример условной проверки в функциях плагина:

function wplicense_is_license_active() {
    return get_option('wplicense_license_status') === 'active';
}

function wplicense_some_premium_feature() {
    if (!wplicense_is_license_active()) {
        return; // Отключаем функцию
    }
    // Основной код премиум-функции
}

Использование плагина Clearfy Pro для управления лицензиями

Если вы используете Clearfy Pro, в нем есть встроенные инструменты для управления лицензиями и активациями, которые можно адаптировать под логику автоматического отзыва. Clearfy позволяет создавать пользовательские проверки и уведомления, а также удобно интегрируется с системами активации.

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

При реализации автоматического отзыва лицензии важно учитывать несколько моментов:

  • Обязательно защищайте API ключи и сервер лицензирования от несанкционированного доступа
  • Используйте HTTPS для всех запросов
  • Проверяйте подлинность приходящих webhook-запросов (например, по подписи или токену)
  • Логируйте случаи отзыва лицензии для анализа и поддержки

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

Решение проблем с проверкой лицензии WordPress плагинов при использовании кеширования
05.07.2026
Решение проблем с автообновлениями WooCommerce плагинов после смены домена
04.06.2026
Как автоматизировать процесс возврата лицензий WordPress плагинов
28.02.2026
Как удалить старые лицензии WordPress плагинов из базы данных
18.03.2026
Как защитить лицензии WordPress плагинов от пиратского использования
26.01.2026