Как удалить неактивные лицензии WordPress плагинов из базы данных

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

Почему важно удалять неактивные лицензии

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

  • Увеличению размера базы данных;
  • Замедлению запросов при проверке лицензий;
  • Росту нагрузки на сервер лицензионного сервера;
  • Потерям в управлении и аналитике использования лицензий.

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

Где хранятся лицензии плагинов в базе данных WordPress

Место хранения лицензий зависит от того, как реализована система лицензирования. Чаще всего лицензии хранятся в таблицах с префиксом wp_ (или другим, если изменён префикс) в следующих вариантах:

  • В пользовательских таблицах, созданных плагином (например, wp_plugin_licenses);
  • В мета полях пользователей (wp_usermeta), если лицензия привязана к пользователю;
  • В опциях WordPress (wp_options) в случае простых лицензий.

Для точного определения таблиц нужно изучить структуру базы данных вашего лицензионного сервера или плагина.

Пример: таблица с лицензиями

Предположим, что у вас есть таблица wp_plugin_licenses со следующими важными полями:

  • license_key — ключ лицензии;
  • status — статус лицензии (active, inactive, revoked);
  • expiration_date — дата окончания действия лицензии;
  • user_id — ID пользователя.

Как удалить неактивные лицензии через SQL-запрос

Чтобы удалить лицензии со статусом inactive или просроченные по дате, используйте следующий запрос:

DELETE FROM wp_plugin_licenses WHERE status = 'inactive' OR expiration_date < NOW();

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

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

Удаление лицензий по дате с помощью WPDB

Если хотите выполнить удаление через PHP-код, используя класс wpdb, можно написать функцию в вашем плагине или теме:

function wplicense_delete_inactive_licenses() {
    global $wpdb;
    $table = $wpdb->prefix . 'plugin_licenses';
    $deleted = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE status = %s OR expiration_date < NOW()",
            'inactive'
        )
    );
    return $deleted;
}

Вызов wplicense_delete_inactive_licenses() удалит соответствующие записи и вернет количество удалённых строк.

Автоматизация очистки с WP-Cron

Чтобы не запускать очистку вручную, можно автоматизировать процесс с помощью WP-Cron. Для этого добавьте в файл functions.php следующую реализацию:

if (!wp_next_scheduled('wplicense_cleanup_hook')) {
    wp_schedule_event(time(), 'daily', 'wplicense_cleanup_hook');
}

add_action('wplicense_cleanup_hook', 'wplicense_delete_inactive_licenses');

function wplicense_delete_inactive_licenses() {
    global $wpdb;
    $table = $wpdb->prefix . 'plugin_licenses';
    $deleted = $wpdb->query(
        "DELETE FROM $table WHERE status = 'inactive' OR expiration_date < NOW()"
    );
    if ($deleted !== false) {
        error_log("Удалено неактивных лицензий: $deleted");
    }
}

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

Пример использования плагина Clearfy Pro для оптимизации базы данных

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

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

Рекомендации по безопасности и резервному копированию

Перед выполнением операций удаления крайне важно:

  • Создать резервную копию базы данных с помощью плагина, например, UpdraftPlus или с помощью хостинг-панели;
  • Проверить критерии удаления на тестовом сервере;
  • Ограничить доступ к функциям удаления только администраторам;
  • Логировать результаты удаления для последующего анализа.

Выводы и лучшие практики

Удаление неактивных лицензий из базы данных — ключевая задача для поддержания производительности и корректной работы лицензионных систем WordPress плагинов. Используйте SQL-запросы или WPDB для точечного удаления, автоматизируйте процесс с WP-Cron и не забывайте про резервные копии.

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

Решение проблем с автообновлениями WooCommerce плагинов при активации лицензий
10.06.2026
Как автоматизировать процесс возврата лицензий WordPress плагинов
28.02.2026
Как автоматизировать отзыв лицензий WordPress плагинов по IP адресу
04.02.2026
Как добавить проверку лицензии в WordPress плагин
06.11.2025
Как отключить автоматические обновления WordPress
14.03.2026