wpmoney.ru wordpress WP Money

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

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

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

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

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

  • Перейти в админку WordPress в раздел «Плагины» и отфильтровать по статусу «Отключены».
  • Проверить дату последнего обновления или использования плагина (если доступно через плагины мониторинга или вручную).
  • Использовать WP-CLI команду wp plugin list --status=inactive для вывода списка неактивных плагинов.

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

1. Создаем функцию для удаления отключенных плагинов

Добавьте следующий код в файл functions.php вашей темы или в отдельный кастомный плагин:

function auto_delete_inactive_plugins() {
    if ( ! current_user_can( 'delete_plugins' ) ) {
        return;
    }

    // Получаем список всех неактивных плагинов
    $inactive_plugins = get_option( 'recently_activated', [] ); // Не всегда подходит, поэтому лучше использовать WP-CLI или другой метод
    $all_plugins = get_plugins();
    $active_plugins = get_option( 'active_plugins', [] );

    $inactive_plugins = array_diff( array_keys( $all_plugins ), $active_plugins );

    foreach ( $inactive_plugins as $plugin ) {
        // Удаляем плагин
        if ( is_plugin_inactive( $plugin ) ) {
            delete_plugins( [$plugin] );
        }
    }
}
add_action( 'admin_init', 'auto_delete_inactive_plugins' );

Этот код при каждом заходе в админку проверяет неактивные плагины и удаляет их. Обратите внимание, что функция delete_plugins() требует прав администратора и способна удалять несколько плагинов сразу.

2. Настройка периодического запуска через WP-Cron

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

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

add_action( 'auto_delete_inactive_plugins_cron', 'auto_delete_inactive_plugins' );

Это будет запускать проверку и удаление один раз в сутки.

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

  1. Перейдите в админку WordPress, раздел «Плагины». В списке неактивных плагинов не должно остаться.
  2. Через WP-CLI выполните wp plugin list и убедитесь, что нет отключенных плагинов.
  3. Проверьте логи сервера и ошибки PHP — не должно быть ошибок, связанных с удалением плагинов.

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

  • Ошибка прав: функция delete_plugins() требует права delete_plugins. Убедитесь, что код выполняется с правами администратора.
  • Удаление активных плагинов: проверяйте статус плагина с помощью is_plugin_inactive() перед удалением.
  • Удаление важных плагинов: добавьте исключения для плагинов, которые не хотите удалять, например, по имени или пути.
  • Проблемы с WP-Cron: если расписание не срабатывает, настройте системный cron или используйте плагин для управления WP-Cron.

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

  • Перед автоматическим удалением плагинов делайте резервные копии файлов и базы данных.
  • Регулярно обновляйте WordPress и плагины, чтобы минимизировать угрозы безопасности.
  • Добавьте логирование удаленных плагинов для аудита действий:
function auto_delete_inactive_plugins() {
    if ( ! current_user_can( 'delete_plugins' ) ) {
        return;
    }

    $all_plugins = get_plugins();
    $active_plugins = get_option( 'active_plugins', [] );
    $inactive_plugins = array_diff( array_keys( $all_plugins ), $active_plugins );

    foreach ( $inactive_plugins as $plugin ) {
        if ( is_plugin_inactive( $plugin ) ) {
            if ( delete_plugins( [$plugin] ) === true ) {
                error_log( "Плагин удален: $plugin" );
            } else {
                error_log( "Ошибка удаления плагина: $plugin" );
            }
        }
    }
}
add_action( 'auto_delete_inactive_plugins_cron', 'auto_delete_inactive_plugins' );

Это поможет отследить и диагностировать возможные проблемы.

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

МетодПлюсыМинусы
Ручное удаление через админкуПростота, полный контрольТратит время, забываем удалять
WP-CLI команда wp plugin deleteБыстро для опытных пользователейНужен доступ к серверу и WP-CLI
Автоматическое удаление через код и WP-CronПолная автоматизация, регулярностьРиск удаления важных плагинов, требует тестирования
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше