Почему важно удалять неиспользуемые плагины
Даже если плагин отключен, он все равно занимает место на сервере, может содержать уязвимости и замедлять процессы обновления сайта. Регулярное удаление неактивных плагинов помогает поддерживать безопасность и производительность 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' );Это будет запускать проверку и удаление один раз в сутки.
Проверка результата после внедрения
- Перейдите в админку WordPress, раздел «Плагины». В списке неактивных плагинов не должно остаться.
- Через WP-CLI выполните
wp plugin listи убедитесь, что нет отключенных плагинов. - Проверьте логи сервера и ошибки 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 | Полная автоматизация, регулярность | Риск удаления важных плагинов, требует тестирования |