Иногда в процессе работы с WordPress возникают ситуации, когда плагин зависает, не удаляется стандартным способом или блокируется системой. Такие плагины могут вызывать ошибки, конфликты и замедление работы сайта. В этой статье разберёмся, как правильно удалить заблокированные плагины, используя как стандартные, так и продвинутые методы, включая работу с базой данных и файловой системой.
Почему плагины блокируются и не удаляются стандартным способом
Блокировка плагинов может происходить по нескольким причинам:
- Плагин активен и в данный момент используется, что мешает его удалению;
- Ошибки в коде плагина, вызывающие сбои и зависания;
- Повреждение файлов плагина или конфликты с другими плагинами;
- Недостаточные права доступа к файловой системе;
- Плагины, которые создают защитные блокировки или резервные копии для предотвращения удаления.
Понимание причины поможет выбрать правильный метод удаления.
Отключение и удаление заблокированного плагина через FTP или файловый менеджер
Самый надёжный способ — деактивировать плагин вручную, переименовав его папку. Для этого:
- Подключитесь к серверу через FTP (например, с помощью FileZilla) или используйте файловый менеджер в панели хостинга;
- Перейдите в директорию
wp-content/plugins/; - Найдите папку проблемного плагина и переименуйте её, например, добавив
-disabledв конце; - После этого WordPress автоматически отключит плагин, так как не сможет его найти;
- Теперь можно удалить папку плагина полностью.
Этот метод не требует доступа к админке WordPress и помогает при ошибках, которые мешают удалению через интерфейс.
Пример функции для деактивации плагина через код WordPress
Если есть доступ к админке, но плагин не деактивируется, можно воспользоваться функцией из файла functions.php темы или отдельным скриптом:
function wpcheck_deactivate_plugin_by_slug($plugin_slug) {
if (is_plugin_active($plugin_slug)) {
deactivate_plugins($plugin_slug);
}
}
// Пример вызова: деактивируем плагин 'example-plugin/example-plugin.php'
wpcheck_deactivate_plugin_by_slug('example-plugin/example-plugin.php');
После выполнения функции обновите список плагинов. Если плагин отключился, удалите его через админку или FTP.
Удаление следов заблокированного плагина из базы данных
Некоторые плагины оставляют записи в базе данных, которые могут мешать их повторной установке или корректной работе сайта. Чтобы почистить базу, можно:
- Использовать специализированные плагины, например Clearfy Pro, который помогает удалять остатки плагинов и оптимизировать базу;
- Выполнить SQL-запросы вручную через phpMyAdmin или аналогичный инструмент.
Пример SQL-запроса для удаления опций, связанных с плагином example_plugin:
DELETE FROM wp_options WHERE option_name LIKE 'example_plugin_%';
Важно делать резервную копию базы перед выполнением подобных операций.
Использование WP-CLI для удаления заблокированных плагинов
WP-CLI — мощный инструмент командной строки для управления WordPress. Он позволяет быстро удалить плагины без входа в админку:
wp plugin deactivate example-plugin
wp plugin delete example-plugin
Если плагин не деактивируется, можно принудительно удалить его папку через команду:
rm -rf wp-content/plugins/example-plugin
WP-CLI особенно полезен на сервере с ограниченным доступом к графическому интерфейсу.
Рекомендации по предотвращению блокировки плагинов в будущем
Чтобы избежать проблем с блокировкой плагинов:
- Регулярно обновляйте плагины и ядро WordPress;
- Используйте проверенные плагины с хорошей поддержкой;
- Перед установкой новых плагинов делайте резервные копии сайта;
- Следите за правами доступа к файловой системе;
- При проблемах с производительностью или конфликтами используйте мониторинг с WPCheck для быстрого выявления проблем.
Заключительный совет
Если стандартные методы не помогают, можно создать собственный плагин для принудительной деактивации и удаления:
function wpcheck_force_delete_plugin($plugin_slug) {
deactivate_plugins($plugin_slug);
$plugin_dir = WP_PLUGIN_DIR . '/' . dirname($plugin_slug);
if (is_dir($plugin_dir)) {
// Рекурсивное удаление папки плагина
wpcheck_rrmdir($plugin_dir);
}
}
function wpcheck_rrmdir($dir) {
if (!is_dir($dir)) return;
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != '.' && $object != '..') {
$path = $dir . '/' . $object;
if (is_dir($path)) {
wpcheck_rrmdir($path);
} else {
unlink($path);
}
}
}
rmdir($dir);
}
// Использование:
wpcheck_force_delete_plugin('example-plugin/example-plugin.php');
Этот код можно временно добавить в functions.php темы, выполнить функцию и потом удалить его.