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

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

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

Давайте разберёмся, зачем вообще отключать плагины, которые вы не используете:

  • Безопасность. Неактивные плагины не получают обновлений и могут стать уязвимыми для атак.
  • Производительность. Хотя неактивные плагины не загружаются, они всё равно занимают место на диске, а их наличие может влиять на скорость бэкапов и обновлений.
  • Управляемость. Меньше плагинов — проще контролировать, что именно работает на сайте, и быстрее находить причины возможных ошибок.

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

Подходы к автоматическому отключению плагинов

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

1. Отключение по времени бездействия

Можно реализовать скрипт, который отключает плагины, неактивные определённое время (например, не обновлявшиеся или неактивные более 6 месяцев).

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

2. Отключение плагинов, неактивных на фронтенде

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

3. Отключение по списку исключений

Для некоторых плагинов можно задать правило, что если они не использовались, то отключить их автоматически, а остальные — оставить.

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

Рассмотрим пример плагина wpkey_auto_deactivate_plugins, который отключает плагины, неактивные более 180 дней.

<?php
/**
 * Plugin Name: WPKey Auto Deactivate Plugins
 * Description: Автоматически отключает плагины, неактивные более 180 дней
 * Version: 1.0
 * Author: WPKey
 */

// Хук активации плагина - инициализация данных
register_activation_hook(__FILE__, 'wpkey_auto_deactivate_init');

function wpkey_auto_deactivate_init() {
    $plugins = get_plugins();
    $now = time();
    foreach ($plugins as $plugin_file => $plugin_data) {
        if (!is_plugin_active($plugin_file)) {
            update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
        } else {
            update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
        }
    }
}

// Обновляем дату последней активности плагина при загрузке админки
add_action('admin_init', 'wpkey_auto_deactivate_update_active_plugins');

function wpkey_auto_deactivate_update_active_plugins() {
    $active_plugins = get_option('active_plugins', []);
    $now = time();
    foreach ($active_plugins as $plugin_file) {
        update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
    }
}

// Планировщик для проверки и отключения
add_action('wpkey_auto_deactivate_check', 'wpkey_auto_deactivate_check_plugins');

function wpkey_auto_deactivate_check_plugins() {
    $plugins = get_plugins();
    $now = time();
    $threshold = 180 * DAY_IN_SECONDS; // 180 дней

    foreach ($plugins as $plugin_file => $plugin_data) {
        if (is_plugin_active($plugin_file)) {
            $last_active = get_option('wpkey_plugin_last_active_' . md5($plugin_file), 0);
            if (($now - $last_active) > $threshold) {
                deactivate_plugins($plugin_file);
                error_log("WPKey: Плагин {$plugin_file} отключён автоматически из-за неактивности.");
            }
        }
    }
}

// Запускаем проверку раз в сутки
if (!wp_next_scheduled('wpkey_auto_deactivate_check')) {
    wp_schedule_event(time(), 'daily', 'wpkey_auto_deactivate_check');
}

// Очищаем при деактивации плагина
register_deactivation_hook(__FILE__, 'wpkey_auto_deactivate_deactivation');
function wpkey_auto_deactivate_deactivation() {
    wp_clear_scheduled_hook('wpkey_auto_deactivate_check');
}

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

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

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

  • Clearfy Pro — плагин для оптимизации WordPress, в том числе помогает выявлять и отключать неиспользуемые расширения.
  • Expert Review — инструмент для аудита сайта, включая анализ плагинов.

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

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

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

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

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

Как добавить просмотры и оценки к постам WordPress
22.02.2026
Как отложить публикацию постов в WordPress
01.01.2026
Как добавить пользовательские роли в WordPress с поддержкой AJAX
18.12.2025
Как изменить URL для страниц библиотеки медиа WordPress
15.01.2026
Как работать с настройками в WordPress через PHP
15.12.2025

Ресурс в разработке, скоро здесь будет сайт по вордпресс