Иногда в процессе работы с WordPress возникает ситуация, когда плагин перестаёт обновляться, блокируется и не удаляется через админ-панель. Это может произойти из-за ошибок в коде, конфликтов, повреждения файлов или проблем с базой данных. В таких случаях стандартный способ удаления плагина через интерфейс не работает. В этой статье подробно рассмотрим, как вручную удалить заблокированные или «замороженные» плагины WordPress, чтобы восстановить нормальную работу сайта.
Почему плагины блокируются и не удаляются через админку WordPress
Причин возникновения проблемы несколько. Часто это происходит из-за:
- Повреждения файлов плагина — например, неполное обновление или загрузка файлов с ошибками.
- Конфликтов с другими плагинами или темой, приводящих к фатальным ошибкам при попытке деактивации.
- Ошибок в базе данных, когда записи о плагине остаются, но файлы удалены или повреждены.
- Недостаточных прав пользователя или сервера на изменение файлов и папок плагинов.
При попытке удалить такой плагин через админку WordPress может выдавать ошибку, либо кнопка удаления неактивна. В этом случае необходимо прибегать к ручным методам.
Удаление плагина WordPress через FTP или файловый менеджер хостинга
Самый надёжный и простой способ удаления — это удаление папки плагина из директории wp-content/plugins/ на сервере. Для этого:
- Подключитесь к серверу через FTP-клиент (например, FileZilla) или воспользуйтесь файловым менеджером в панели управления хостингом.
- Перейдите в папку
wp-content/plugins/. - Найдите папку проблемного плагина. Обычно имя папки совпадает с названием плагина.
- Удалите эту папку целиком.
После удаления файлов плагина WordPress перестанет его видеть и загружать. Однако записи о плагине в базе данных останутся, что может приводить к ошибкам и предупреждениям.
Удаление записей плагина из базы данных WordPress
Чтобы полностью избавиться от плагина, нужно почистить базу данных. Для этого:
- Подключитесь к базе данных сайта через phpMyAdmin или другой инструмент управления базой.
- Найдите таблицы, связанные с плагином. Обычно они начинаются с префикса
wp_и содержат название плагина. - Удалите эти таблицы, если они не нужны и не используются другими плагинами.
- Также проверьте таблицы
wp_optionsиwp_usermetaна наличие опций и метаданных плагина — удалите соответствующие записи.
Перед любыми действиями с базой данных обязательно сделайте резервную копию — это позволит избежать потери важных данных.
Временное отключение плагина без доступа к админке
Если плагин вызывает ошибки, и вы не можете зайти в админ-панель, можно временно отключить все плагины или конкретный плагин через базу данных или FTP.
Отключение плагинов через базу данных
В таблице wp_options найдите запись с названием active_plugins. Это сериализованный массив активных плагинов. Удалив или отредактировав эту запись, вы отключите плагины.
-- пример SQL-запроса для отключения всех плагинов
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
Если нужно отключить конкретный плагин, расшифруйте сериализованный массив, удалите нужный элемент и сохраните обратно.
Отключение плагина через переименование папки
Если изменить имя папки плагина в wp-content/plugins/ — WordPress автоматически деактивирует его. Например, переименуйте папку plugin-name в plugin-name-disabled.
Автоматизация очистки плагинов с помощью WPReset
Плагин WPReset позволяет быстро сбросить состояние WordPress, включая удаление всех плагинов и настроек. Это особенно полезно при тестировании или восстановлении после ошибок.
WPReset имеет функции экспресс-удаления всех плагинов и тем, а также восстановление из контрольных точек. Это позволяет не только очистить заблокированные плагины, но и избежать повторения ошибок.
Пример PHP-функции для удаления плагина программно
Если нужно написать свой скрипт для удаления плагина, можно использовать следующий пример. Он удаляет папку плагина с помощью PHP и затем очищает опции в базе данных.
function wpreset_delete_plugin_manual($plugin_slug) {
$plugin_dir = WP_CONTENT_DIR . '/plugins/' . $plugin_slug;
if (!is_dir($plugin_dir)) {
return 'Папка плагина не найдена';
}
// Рекурсивное удаление папки
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($plugin_dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($files as $fileinfo) {
$todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink');
$todo($fileinfo->getRealPath());
}
rmdir($plugin_dir);
// Удаление опций плагина из базы данных
global $wpdb;
$option_name = 'wpreset_plugin_' . $plugin_slug . '_options';
$wpdb->delete($wpdb->options, ['option_name' => $option_name]);
return 'Плагин удалён вручную';
}
Вызывайте эту функцию в админке или в отдельном скрипте, передавая слаг плагина. Но будьте осторожны — удаление плагина вручную может привести к потере данных.
Советы по предотвращению блокировки плагинов в WordPress
Чтобы избежать проблем с блокировкой и заморозкой плагинов, следуйте рекомендациям:
- Обновляйте плагины и WordPress регулярно, избегая пропуска важных обновлений.
- Используйте проверенные и совместимые плагины из официального репозитория или надежных источников.
- Перед установкой новых плагинов делайте резервные копии сайта.
- Не редактируйте файлы плагинов напрямую, если не уверены в последствиях.
- Отключайте и удаляйте плагины аккуратно через админку или проверенные инструменты, такие как WPReset.
Соблюдение этих правил существенно снизит вероятность возникновения проблем с заблокированными плагинами.