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

Устаревшие и неиспользуемые плагины на WordPress-сайте — это не только потенциальная угроза безопасности, но и дополнительная нагрузка на систему, замедляющая работу сайта. В этой статье рассмотрим, как автоматизировать процесс удаления таких плагинов, используя встроенные функции WordPress, готовые решения и примеры собственного кода с префиксом wpscan_.

Почему важно удалять старые плагины и как их определить

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

  • Перейдите в админ-панель WordPress в раздел Плагины и отфильтруйте неактивные плагины.
  • Используйте плагины-аналитики, например, Plugin Checker, для оценки совместимости и устаревших версий.
  • Проверяйте даты последних обновлений в репозитории WordPress или на странице плагина.

Удаление таких плагинов вручную — работа рутинная, особенно если у вас много проектов. Автоматизация — ключ к поддержанию сайта в чистоте и безопасности.

Автоматизация удаления плагинов с помощью кода

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

Ниже пример функции wpscan_auto_delete_old_plugins(), которая удаляет неактивные плагины, не обновлявшиеся более года:

function wpscan_auto_delete_old_plugins() {
    if ( ! current_user_can('activate_plugins') ) {
        return;
    }

    require_once ABSPATH . 'wp-admin/includes/plugin.php';
    $all_plugins = get_plugins();
    $inactive_plugins = array_filter(array_keys($all_plugins), function($plugin) {
        return !is_plugin_active($plugin);
    });

    $one_year_ago = strtotime('-1 year');

    foreach ($inactive_plugins as $plugin_file) {
        $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file, false, false);
        $last_updated = isset($plugin_data['Last Updated']) ? strtotime($plugin_data['Last Updated']) : 0;

        // Если дата обновления неизвестна, можно проверить время модификации главного файла плагина
        if ($last_updated === 0) {
            $last_updated = filemtime(WP_PLUGIN_DIR . '/' . $plugin_file);
        }

        if ($last_updated < $one_year_ago) {
            // Удаляем плагин через WP Filesystem API
            if (function_exists('delete_plugins')) {
                delete_plugins(array($plugin_file));
            }
        }
    }
}

// Запускаем функцию раз в сутки через WP Cron
if (!wp_next_scheduled('wpscan_auto_delete_old_plugins_hook')) {
    wp_schedule_event(time(), 'daily', 'wpscan_auto_delete_old_plugins_hook');
}
add_action('wpscan_auto_delete_old_plugins_hook', 'wpscan_auto_delete_old_plugins');

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

Настройка WP Cron позволяет запускать этот процесс автоматически, не требуя ручного вмешательства.

Как получить дату последнего обновления плагина

get_plugin_data() не всегда возвращает дату последнего обновления. Альтернативой служит проверка времени изменения файлов плагина через filemtime(). Это не идеально, но часто дает актуальную информацию.

Для более точного контроля можно интегрировать API репозитория WordPress, но это требует отдельного сложного решения.

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

Если вы не хотите писать код, можно использовать специализированные плагины:

  • Plugin Organizer — позволяет управлять активацией и деактивацией плагинов, что помогает выявить неиспользуемые.
  • WP-Optimize — хотя основной функцией является оптимизация базы данных, в нем есть инструменты для очистки и удаления неиспользуемого кода.
  • Clearfy Pro — плагин от WPShop с функциями оптимизации, который помогает выявлять и отключать неиспользуемые плагины.

Эти инструменты помогают визуально контролировать состояние плагинов и вручную или полуавтоматически очищать сайт.

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

При автоматическом удалении плагинов важно:

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

Для реализации уведомлений можно добавить в функцию wpscan_auto_delete_old_plugins() отправку email:

wp_mail(
    get_option('admin_email'),
    'Удаление старых плагинов на сайте',
    'Автоматически были удалены плагины: ' . implode(', ', $deleted_plugins_list)
);

Как интегрировать автоматизацию в процессы DevOps

Если вы используете CI/CD для управления сайтом, можно запускать скрипты удаления плагинов на сервере в рамках пайплайна, например с WP-CLI:

wp plugin delete plugin-slug --quiet

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

Заключение

Автоматизация удаления старых плагинов — эффективный способ поддерживать безопасность и производительность WordPress-сайтов. Комбинируйте кодовые решения с проверенными плагинами, обязательно делайте резервные копии и внедряйте уведомления. Такой подход позволит минимизировать риски и сократить время на рутинные операции.

Как решить проблему неудачного удаления отказанных заказов WooCommerce с помощью кода
21.04.2026
Как настроить отправку писем WordPress через SMTP: плагины и примеры кода
21.02.2026
Как автоматизировать удаление старого контента в WordPress
22.01.2026
Как отключить автоматические обновления WordPress без плагинов
07.12.2025
Аудит и настройка прав доступа к файлам WordPress
15.04.2026