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

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

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

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

  • Активировать продукт только на одном или нескольких сайтах;
  • Обеспечить получение обновлений и поддержки только для легальных клиентов;
  • Ограничить использование пробной или демо-версии;
  • Собирать статистику по активациям и пользователям.

Основные компоненты простой системы лицензирования

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

  • Генерация лицензионных ключей — уникальные коды, выдаваемые пользователям после покупки.
  • Проверка лицензий — механизм в плагине или теме, который отправляет запрос на сервер для проверки валидности ключа.
  • Сервер лицензий — серверная часть, которая хранит ключи и отвечает на запросы проверки.

В нашем случае сервер лицензий можно реализовать как отдельный WordPress-сайт с REST API или даже как простой PHP-скрипт.

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

Создание REST API для проверки лицензии

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

add_action('rest_api_init', function () {
    register_rest_route('wpkit/v1', '/check-license', array(
        'methods' => 'POST',
        'callback' => 'wpkit_check_license_callback',
        'permission_callback' => '__return_true',
    ));
});

function wpkit_check_license_callback(WP_REST_Request $request) {
    $license_key = sanitize_text_field($request->get_param('license_key'));
    
    // Пример хранения лицензий в опциях. На практике используйте базу данных или кастомный тип записи
    $valid_licenses = get_option('wpkit_valid_licenses', array('ABC123', 'XYZ789'));
    
    if (in_array($license_key, $valid_licenses)) {
        return array('status' => 'valid', 'message' => 'Лицензия действительна');
    } else {
        return new WP_Error('invalid_license', 'Лицензия недействительна', array('status' => 403));
    }
}

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

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

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

function wpkit_check_license_on_server($license_key) {
    $response = wp_remote_post('https://your-license-server.ru/wp-json/wpkit/v1/check-license', array(
        'body' => array('license_key' => $license_key),
        'timeout' => 15,
    ));
    if (is_wp_error($response)) {
        return false;
    }
    $code = wp_remote_retrieve_response_code($response);
    $body = wp_remote_retrieve_body($response);
    
    if ($code == 200) {
        $data = json_decode($body, true);
        return isset($data['status']) && $data['status'] === 'valid';
    }
    return false;
}

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

Использование готовых плагинов для лицензирования WordPress продуктов

Если не хочется реализовывать всё с нуля, можно использовать готовые решения:

  • Easy Digital Downloads Software Licensing — мощное расширение для EDD, позволяющее выдавать и проверять лицензии.
  • WooCommerce API Manager — интеграция с WooCommerce для продажи с лицензиями.
  • Freemius — платформа, предоставляющая комплексное решение для продажи, лицензирования и аналитики плагинов.

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

Практические советы по безопасности и удобству

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

  • Используйте SSL (HTTPS) для всех запросов, чтобы защитить данные ключей.
  • Добавляйте nonce и другие методы защиты от CSRF при работе с REST API.
  • Храните лицензии в базе данных в зашифрованном виде или с хешированием, чтобы предотвратить утечки.
  • Реализуйте ограничение количества активаций ключа по доменам или IP.
  • Обновляйте и улучшайте систему, учитывая отзывы пользователей.

Интеграция с плагинами WPShop

Если вы используете продукты с WPShop, например, WPGPT или Clearfy Pro, то для распространения лицензий можно использовать встроенные механизмы этих плагинов или расширять их REST API, добавляя проверку ключей в ваши кастомные решения. Это позволит обеспечить комплексный контроль и автоматизировать процесс обновлений и поддержки.

Заключение

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

Как создать простой плагин для автоматического очищения базы данных WordPress
09.02.2026
WordPress: как автоматически удалять старые медиафайлы для оптимизации сайта
14.04.2026
Как создать автоматическую систему отслеживания ошибок в WordPress
03.04.2026
WooCommerce: как исключить товары с определёнными атрибутами из корзины
04.05.2026
Как добавить дополнительное поле в форму регистрации WordPress с помощью кода
15.12.2025