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

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

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

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

  • Проверьте список активных и неактивных плагинов в разделе «Плагины» админ-панели.
  • Используйте плагин Query Monitor для анализа загрузки плагинов и их влияния на производительность.
  • Обратите внимание на плагины, которые не обновлялись более 6 месяцев.
  • Проанализируйте логи сайта на предмет ошибок, связанных с плагинами.

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

Автоматизация процесса поможет избежать накопления «мертвого» кода и снизит риски безопасности.

1. Создайте резервную копию сайта

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

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

Для реализации задачи можно использовать WP-CLI или написать PHP-скрипт, который будет запускаться через cron. Пример PHP-скрипта:

<?php
// Путь к WordPress
require_once('/path/to/wp-load.php');

// Получаем список неактивных плагинов
$inactive_plugins = get_option('recently_deactivated_plugins', []);
if (empty($inactive_plugins)) {
    $inactive_plugins = get_option('inactive_plugins', []);
}

// Проверяем дату последнего активации плагина
foreach ($inactive_plugins as $plugin_file) {
    $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
    $last_used = get_option('plugin_last_used_' . md5($plugin_file));
    
    // Отключаем плагин, если он не был активен более 30 дней
    if ($last_used && (time() - $last_used > 30 * 24 * 60 * 60)) {
        deactivate_plugins($plugin_file);
        error_log("Plugin $plugin_file has been automatically deactivated.");
    }
}

// Хук для обновления времени последнего использования плагина
add_action('activated_plugin', function($plugin) {
    update_option('plugin_last_used_' . md5($plugin), time());
});

Этот скрипт нужно запускать по расписанию (через cron) для регулярного отключения плагинов, неактивных более 30 дней.

3. Настройте запуск скрипта через WP-Cron или системный cron

Для системного cron добавьте задачу:

0 3 * * * /usr/bin/php /path/to/your-script.php

Или используйте WP-Cron с хуком:

add_action('wpse_auto_deactivate_plugins', 'your_deactivation_function');
if (!wp_next_scheduled('wpse_auto_deactivate_plugins')) {
    wp_schedule_event(time(), 'daily', 'wpse_auto_deactivate_plugins');
}

Проверка результата после внедрения

  • Проверьте в админке раздел «Плагины» — неактивные плагины, не используемые более 30 дней, должны быть отключены.
  • Проверьте логи ошибок на наличие записей о деактивации.
  • Убедитесь, что сайт работает корректно без отключенных плагинов.

Частые ошибки и как их исправить

  • Плагины деактивируются, хотя используются: Проверьте правильность логики определения «использования». Можно расширить критерии, например, учитывать дату последнего обновления или событие активации.
  • Скрипт не запускается по расписанию: Убедитесь, что cron-задание настроено корректно и имеет права на запуск PHP-скрипта.
  • Ошибки доступа к опциям: Проверьте, что скрипт подключается к WordPress через wp-load.php и имеет доступ к базе данных.

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

  • Не удаляйте плагины автоматически без предварительного уведомления администратора.
  • Рекомендуется логировать все действия по деактивации для последующего аудита.
  • Проверяйте совместимость с другими плагинами и темой перед автоматизацией.
  • Используйте WP-CLI для ручного контроля и отладки, например:
wp plugin deactivate plugin-slug --quiet

Сравнение способов автоматического отключения плагинов

МетодПлюсыМинусыРекомендуется для
PHP-скрипт с WP-CronАвтоматизация без сторонних инструментовЗависит от посещаемости сайта, возможна задержкаСредние и небольшие сайты
Системный cron + PHP-скриптТочное расписание, независимость от трафикаТребуется доступ к серверуСредние и крупные проекты
WP-CLI скриптыУдобно для админов и разработчиковНе подходит для автоматического запуска без cronРучное управление и отладка
Отключение автопроизводства событий WooCommerce для оптимизации производительности
15.05.2026
Как создать собственный шорткод с параметрами в WordPress: практическое руководство
21.01.2026
Как использовать хуки для автоматизации в WordPress
17.12.2025
Как создать подробный плагин для автоматического создания копий постов в WordPress
03.04.2026
Как использовать хук woocommerce_order_status_changed для автоматизации в WooCommerce
27.05.2026