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

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

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

Если вы продаёте плагин или тему, важно защитить свой продукт от нелегального распространения. Автоматический генератор лицензий позволяет:

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

Реализовать это можно самостоятельно или с помощью готовых решений. Ниже рассмотрим оба варианта.

Обзор плагинов для генерации и проверки лицензий

Easy Digital Downloads Software Licensing

Если вы продаете продукты через Easy Digital Downloads (EDD), их расширение Software Licensing — это мощный инструмент для создания лицензий, управления ими и интеграции с WP-CLI для автоматизации. Он позволяет создавать уникальные ключи, проверять их и отключать при необходимости.

WooCommerce API Licenses

Для WooCommerce есть плагины, которые добавляют генерацию лицензий. Например, WooCommerce API Licenses позволяет создавать ключи и управлять ими через панель администратора.

Custom License Manager

Для более гибкой настройки можно использовать плагины типа Custom License Manager, которые позволяют интегрироваться с собственным API для проверки лицензий.

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

Рассмотрим пример, как создать простой генератор лицензий с проверкой через AJAX. Для этого создадим плагин с основными функциями.

1. Создание функции генерации уникального ключа

Ключ должен быть уникальным и достаточно сложным. Используем хеширование с рандомом и временем:

function wptricks_generate_license_key($user_id) {
    $random = wp_generate_password(16, false, false);
    $time = time();
    $key = hash('sha256', $user_id . $random . $time);
    return strtoupper(substr($key, 0, 25));
}

Эта функция создаёт 25-символьный ключ на основе ID пользователя, случайной строки и текущего времени.

2. Сохранение ключа и привязка к пользователю

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

function wptricks_save_license_key($user_id, $license_key) {
    update_user_meta($user_id, '_wptricks_license_key', $license_key);
}

3. Создание AJAX обработчика для проверки лицензии

Пользователь или ваш плагин может отправлять запросы для проверки статуса лицензии. Пример AJAX хука:

add_action('wp_ajax_wptricks_check_license', 'wptricks_check_license_callback');
add_action('wp_ajax_nopriv_wptricks_check_license', 'wptricks_check_license_callback');

function wptricks_check_license_callback() {
    $license_key = sanitize_text_field($_POST['license_key'] ?? '');
    if (!$license_key) {
        wp_send_json_error('License key is required');
    }
    $user_query = new WP_User_Query(array(
        'meta_key' => '_wptricks_license_key',
        'meta_value' => $license_key,
        'number' => 1,
    ));
    if (empty($user_query->results)) {
        wp_send_json_error('Invalid license key');
    } else {
        $user = $user_query->results[0];
        wp_send_json_success(array('user_id' => $user->ID, 'status' => 'valid'));
    }
    wp_die();
}

Как интегрировать генератор лицензий с механизмом обновлений WordPress

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

  1. Создайте endpoint на вашем сервере, который принимает ключ лицензии и возвращает данные о версии.
  2. В плагине добавьте фильтр site_transient_update_plugins или site_transient_update_themes, проверяющий ключ и добавляющий обновление.
  3. При запросе обновления плагин проверяет ключ через ваш API.

Это повысит лояльность клиентов и упростит поддержку.

Пример фильтра для плагина

add_filter('site_transient_update_plugins', 'wptricks_check_plugin_update');
function wptricks_check_plugin_update($transient) {
    if (empty($transient->checked)) {
        return $transient;
    }
    $license_key = get_option('wptricks_license_key');
    $response = wp_remote_post('https://example.com/api/check_update', array(
        'body' => array('license_key' => $license_key, 'plugin' => 'my-plugin-slug'),
    ));
    if (is_wp_error($response)) {
        return $transient;
    }
    $data = json_decode(wp_remote_retrieve_body($response));
    if ($data && version_compare($data->new_version, $transient->checked['my-plugin-slug/my-plugin.php'], '>')) {
        $transient->response['my-plugin-slug/my-plugin.php'] = (object) array(
            'slug' => 'my-plugin-slug',
            'new_version' => $data->new_version,
            'url' => $data->url,
            'package' => $data->package,
        );
    }
    return $transient;
}

Дополнительные советы по безопасности и масштабируемости

При создании генератора лицензий обращайте внимание на следующие моменты:

  • Храните ключи шифрованными, если возможно.
  • Ограничивайте количество активаций ключа, чтобы предотвратить злоупотребления.
  • Используйте nonce и проверку прав пользователей в AJAX запросах.
  • Реализуйте логи активаций для контроля.
  • Позаботьтесь о резервном копировании базы с лицензиями.

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

Заключение

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

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

Как использовать AJAX в WordPress для обновления контента без перезагрузки
23.12.2025
WooCommerce: автоматическое возврат средств и смена статуса заказа через код
29.06.2026
Как удалить неиспользуемые типы записей в базе данных WordPress
07.01.2026
Как удалить все записи пользователя в WordPress
26.11.2025
Как удалить или изменить URL авторских страниц в WordPress
11.12.2025