Со временем в WordPress-сайтах накапливается множество плагинов, которые либо перестали использоваться, либо были установлены для тестирования. Их наличие негативно влияет на производительность и безопасность сайта. В этой статье мы рассмотрим, как удалить неиспользуемые плагины через код, чтобы автоматизировать процесс и избежать ошибок.
Почему важно удалять неиспользуемые плагины в WordPress
Каждый установленный плагин увеличивает нагрузку на сервер, замедляет загрузку сайта и потенциально создает вектор для атак, если плагин устарел и содержит уязвимости. Просто деактивировать плагин недостаточно – файлы остаются в системе, занимая место и создавая риск. Поэтому лучше полностью удалять неиспользуемые расширения.
Удаление вручную через административную панель – самый простой способ, но если плагинов много или вы хотите это делать регулярно, удобнее использовать код.
Использование wp-cli для массового удаления плагинов
Если у вас есть доступ к командной строке на сервере, wp-cli — это мощный инструмент для управления WordPress, включая плагины. Чтобы получить список установленных плагинов и их статусы, выполните:
wp plugin listДля удаления плагина используйте команду:
wp plugin delete plugin-slugГде plugin-slug — это папка плагина. Чтобы удалить сразу несколько плагинов, перечислите их через пробел.
Можно написать скрипт, который будет автоматически удалять все деактивированные плагины:
wp plugin list --status=inactive --field=name | xargs wp plugin deleteЭтот однострочник сначала выводит все деактивированные плагины, а затем удаляет их. Убедитесь, что вы не удаляете нужные плагины.
Удаление плагинов через PHP-код — создание функции для wplogin.ru
Если доступа к командной строке нет, можно написать PHP-функцию, которая удалит плагины программно. Вот пример функции wplogin_delete_inactive_plugins(), которую можно добавить в файл functions.php вашей темы или в отдельный плагин:
function wplogin_delete_inactive_plugins() {
if (!current_user_can('activate_plugins')) {
return 'Недостаточно прав для удаления плагинов';
}
include_once ABSPATH . 'wp-admin/includes/plugin.php';
$all_plugins = get_plugins();
$active_plugins = get_option('active_plugins', []);
$deleted = [];
foreach ($all_plugins as $plugin_file => $plugin_data) {
if (!in_array($plugin_file, $active_plugins)) {
$result = delete_plugins([$plugin_file]);
if (is_wp_error($result)) {
error_log('Ошибка удаления плагина ' . $plugin_file . ': ' . $result->get_error_message());
} else {
$deleted[] = $plugin_data['Name'];
}
}
}
return $deleted;
}Эта функция проверяет права пользователя, получает список всех плагинов и активных плагинов, а затем удаляет все неактивные. Результат — массив с именами удаленных плагинов.
Рекомендуется запускать такую функцию вручную (например, через отдельный админ-скрипт или wp-cli команду) и не оставлять в рабочем коде для автоматического вызова.
Пример вызова и вывода результата
$deleted_plugins = wplogin_delete_inactive_plugins();
if (is_array($deleted_plugins) && !empty($deleted_plugins)) {
echo 'Удалены плагины: ' . implode(", ", $deleted_plugins);
} else {
echo 'Не найдено неактивных плагинов для удаления или ошибка доступа.';
}Безопасность при удалении плагинов
Удаление плагинов — операция потенциально опасная. Перед выполнением таких действий обязательно:
- Создайте резервную копию сайта и базы данных;
- Убедитесь, что вы удаляете только неактивные и точно ненужные плагины;
- Проверяйте права пользователя, который инициирует удаление;
- Тестируйте функцию на тестовом сервере;
- Избегайте запуска удаления без подтверждения.
Безопасность важна, чтобы не нарушить работу сайта и не потерять данные.
Дополнительные советы по работе с плагинами
Помимо удаления, полезно регулярно проводить аудит установленных плагинов. Вот несколько рекомендаций:
- Используйте плагины мониторинга, например, Health Check & Troubleshooting, чтобы выявлять неиспользуемые плагины и конфликты.
- Следите за обновлениями, чтобы не было уязвимостей.
- Минимизируйте количество плагинов — чем меньше, тем лучше.
- Для автоматизации можно написать cron-задачи с вызовом wp-cli или PHP-функций.
Пример автоматизации с wp-cron и PHP
Чтобы запускать функцию удаления неактивных плагинов по расписанию, используйте wp-cron. Пример регистрации задачи:
add_action('wplogin_delete_inactive_plugins_cron', 'wplogin_delete_inactive_plugins');
if (!wp_next_scheduled('wplogin_delete_inactive_plugins_cron')) {
wp_schedule_event(time(), 'daily', 'wplogin_delete_inactive_plugins_cron');
}Этот код добавляет ежедневный запуск функции. Но повторимся — используйте с осторожностью и обязательно проверяйте логи.