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

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

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

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

  • Снизить нагрузку на службу поддержки.
  • Своевременно блокировать доступ к плагину для нарушителей.
  • Обеспечить гибкую настройку правил отзыва по разным критериям (срок, IP, домен, регион и др.).
  • Улучшить безопасность и контроль использования вашего продукта.

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

Создание шаблонов для условий отзыва лицензий

Основная идея — создать набор шаблонов (правил), которые проверяются на каждую лицензию, и если условие выполняется, лицензия отзывается.

Пример шаблонов:

  • Просроченные по дате лицензии
  • Лицензии, активированные на запрещённых доменах
  • Лицензии с превышением лимита активных установок
  • Лицензии с подозрительной активностью по IP или геолокации

Пример структуры шаблона в PHP

interface Wplicense_ConditionInterface {
    public function check(array $licenseData): bool;
    public function getReason(): string;
}

class Wplicense_ExpiredCondition implements Wplicense_ConditionInterface {
    public function check(array $licenseData): bool {
        return strtotime($licenseData['expiry_date']) < time();
    }
    public function getReason(): string {
        return 'Лицензия просрочена';
    }
}

class Wplicense_DomainRestrictionCondition implements Wplicense_ConditionInterface {
    private $forbiddenDomains = ['badsite.ru', 'piratecopy.com'];
    public function check(array $licenseData): bool {
        return in_array($licenseData['domain'], $this->forbiddenDomains);
    }
    public function getReason(): string {
        return 'Использование на запрещённом домене';
    }
}

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

Автоматизация отзыва лицензий через WP-Cron

Для регулярной проверки лицензий и применения шаблонов удобно использовать WP-Cron — встроенный планировщик задач WordPress.

Пример регистрации задачи:

add_action('wplicense_cron_check_licenses', 'wplicense_cron_check_licenses_callback');

if (!wp_next_scheduled('wplicense_cron_check_licenses')) {
    wp_schedule_event(time(), 'hourly', 'wplicense_cron_check_licenses');
}

function wplicense_cron_check_licenses_callback() {
    $licenses = wplicense_get_all_licenses(); // Функция получения лицензий из БД
    $conditions = [
        new Wplicense_ExpiredCondition(),
        new Wplicense_DomainRestrictionCondition(),
        // Добавляйте другие условия
    ];

    foreach ($licenses as $license) {
        foreach ($conditions as $condition) {
            if ($condition->check($license)) {
                wplicense_revoke_license($license['id'], $condition->getReason());
                break; // Отзываем сразу при первом срабатывании
            }
        }
    }
}

Функции wplicense_get_all_licenses() и wplicense_revoke_license() вы реализуете согласно структуре вашей базы данных и API.

Пример функции отзыва лицензии

Рассмотрим пример простой функции для отзыва лицензии с записью причины и времени:

function wplicense_revoke_license($license_id, $reason) {
    global $wpdb;
    $table = $wpdb->prefix . 'wplicenses';
    $wpdb->update(
        $table,
        [
            'status' => 'revoked',
            'revoke_reason' => $reason,
            'revoked_at' => current_time('mysql')
        ],
        ['id' => $license_id],
        ['%s', '%s', '%s'],
        ['%d']
    );
    // Можно добавить уведомление пользователя или администратора
}

Дополнительные рекомендации и плагины

Для более сложных сценариев можно использовать Clearfy Pro — плагин с расширенными настройками безопасности и контроля, который помогает управлять лицензиями и доступом.

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

Обработка уведомлений пользователей при отзыве

При отзыве лицензии важно информировать пользователя о причине и дальнейших шагах. Можно организовать отправку email или push-уведомлений.

Пример добавления уведомления по email:

function wplicense_notify_user_revoke($user_email, $reason) {
    $subject = 'Ваша лицензия была отозвана';
    $message = 'Здравствуйте!\n\nВаша лицензия была отозвана по причине: ' . $reason . ".\nЕсли у вас есть вопросы, свяжитесь с поддержкой.";
    wp_mail($user_email, $subject, $message);
}

Вызывайте эту функцию внутри wplicense_revoke_license() с email пользователя.

Заключение

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

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