Автоматическое отключение неиспользуемых плагинов в WordPress

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

Почему важно отключать неиспользуемые плагины

Неактивные плагины могут создавать несколько проблем:

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

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

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

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

  • Плагин не активен более X дней.
  • Плагин не вызывал никаких хуков или действий в течение периода.
  • Отсутствие пользовательских данных, создаваемых плагином.

Для простоты можно начать с первого критерия — плагин неактивен более 30 дней.

Пример кода: автоматическое отключение неактивных плагинов через 30 дней

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

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

    $inactive_plugins = get_option('inactive_plugins', []);
    $threshold = 30 * DAY_IN_SECONDS; // 30 дней
    $now = time();

    foreach ($inactive_plugins as $plugin_file) {
        $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
        $last_deactivated = get_option('wpbloger_plugin_deactivated_' . md5($plugin_file), 0);

        // Если плагин неактивен более 30 дней и дату деактивации мы не записывали ранее
        if ($last_deactivated === 0) {
            update_option('wpbloger_plugin_deactivated_' . md5($plugin_file), $now);
            continue;
        }

        // Если прошло более 30 дней с момента деактивации
        if (($now - $last_deactivated) > $threshold) {
            // Дополнительно можно отправлять уведомление администратору
            // Удаляем плагин
            if (is_plugin_inactive($plugin_file)) {
                deactivate_plugins($plugin_file);
                // Можно также удалить плагин через WP Filesystem API
            }
        }
    }
}
add_action('admin_init', 'wpbloger_auto_deactivate_plugins');

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

Оптимизация и уведомления

Чтобы не перегружать сервер, лучше запускать проверку по крону:

function wpbloger_schedule_plugin_check() {
    if (!wp_next_scheduled('wpbloger_daily_plugin_check')) {
        wp_schedule_event(time(), 'daily', 'wpbloger_daily_plugin_check');
    }
}
add_action('wp', 'wpbloger_schedule_plugin_check');

add_action('wpbloger_daily_plugin_check', 'wpbloger_auto_deactivate_plugins');

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

Готовые плагины для управления неиспользуемыми плагинами

Если хочется готовое решение, обратите внимание на плагины:

  • Clearfy Pro — позволяет оптимизировать и управлять плагинами, включая отключение ненужных.
  • WPRemark — для мониторинга активности плагинов и уведомлений.

Заключение

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

Удаление пустых терминов в WordPress: как очистить таксономии от неиспользуемых категорий и меток
05.02.2026
Удаление неиспользуемых метаданных в WordPress для оптимизации базы данных
17.11.2025
Как создать автоматическое отключение неиспользуемых тем в WordPress
02.02.2026
Оптимизация загрузки шрифтов в WordPress: практические решения и примеры кода
05.12.2025
Как использовать фильтр YITH WooCommerce Wishlist для добавления собственных критериев
16.01.2026