В WordPress нередко возникает необходимость не только удалить плагин, но и заблокировать его повторную активацию, особенно если плагин вызывает конфликты, уязвимости или нежелательное поведение сайта. В этой статье мы подробно разберём, как правильно удалить плагин, а главное — как заблокировать его активацию, используя код и практические решения.
Почему важно блокировать повторную активацию плагина
Удаление плагина через админку WordPress — это первый шаг, но не всегда он гарантирует, что плагин не будет восстановлен или активирован повторно, например, если в команду сайта входит другой администратор или злоумышленник. В ряде случаев плагины представляют угрозу безопасности, и их нужно не просто удалить, а именно заблокировать.
Блокировка активации плагина помогает:
- Избежать конфликтов с другими плагинами или темой.
- Повысить безопасность сайта, исключив повторную установку уязвимого плагина.
- Контролировать список разрешённых плагинов на сайте.
Рассмотрим, как это реализовать на практике.
Удаление плагина стандартными средствами WordPress
Для удаления плагина через админку нужно:
- Перейти в раздел «Плагины» → «Установленные плагины».
- Отключить нужный плагин, если он активен.
- Нажать «Удалить» под названием плагина.
Однако этот способ не защитит от повторной установки или активации. Для этого нужны дополнительные меры.
Как заблокировать активацию плагина с помощью кода
Самый надёжный способ — использовать фильтр plugin_action_links_{plugin_file} и хук pre_current_active_plugins для контроля активации и отображения плагина в админке.
Пример функции для блокировки активации конкретного плагина:
function wpconfig_ru_block_plugin_activation($plugins) {
$blocked_plugin = 'akismet/akismet.php'; // Путь к плагину, который нужно заблокировать
if (isset($plugins[$blocked_plugin])) {
unset($plugins[$blocked_plugin]); // Убираем плагин из списка активных
}
return $plugins;
}
add_filter('pre_current_active_plugins', 'wpconfig_ru_block_plugin_activation');Этот код убирает плагин из списка активных, что предотвращает его работу.
Чтобы полностью запретить активацию плагина, можно использовать хук plugin_action_links и проверять попытку активации:
function wpconfig_ru_prevent_plugin_activation($plugin, $network_activation) {
$blocked_plugin = 'akismet/akismet.php';
if ($plugin === $blocked_plugin) {
wp_die('Активация этого плагина запрещена администратором сайта.');
}
}
add_action('activate_plugin', 'wpconfig_ru_prevent_plugin_activation', 10, 2);Такой подход выведет ошибку и не позволит активировать плагин.
Удаление файлов плагина из файловой системы
Для полной очистки рекомендуется удалить папку плагина из /wp-content/plugins/. Это можно сделать через FTP, SSH или панель хостинга. Однако без блокировки активации через код или административный контроль плагин может быть вновь загружен.
Использование плагинов для управления доступом к плагинам
Если вы хотите более гибко управлять доступом к плагинам, можно использовать специализированные плагины, например:
- Clearfy Pro — позволяет ограничить права администраторов и отключить некоторые плагины на уровне интерфейса.
- WPRemark — для создания заметок и предупреждений, которые можно использовать для информирования команды о блокировках.
Такие плагины помогут систематизировать управление плагинами и усилить безопасность.
Как проверить, что плагин действительно заблокирован
После внедрения блокировок рекомендуется проверить:
- Не появляется ли плагин в списке активных и доступных для активации.
- Выдается ли сообщение об ошибке при попытке активации плагина через админку.
- Проверить, что файлы плагина удалены или недоступны.
Можно дополнительно использовать WP-CLI для проверки состояния плагинов через командную строку:
wp plugin status akismet
wp plugin deactivate akismet
wp plugin delete akismetСоветы по безопасности и управлению плагинами
Чтобы избежать проблем с нежелательными плагинами:
- Ограничьте доступ к админке только доверенным пользователям.
- Используйте контроль версий и резервные копии перед изменениями.
- Регулярно обновляйте WordPress и плагины.
- Используйте фильтры и хуки для контроля состояния плагинов.
Так вы повысите устойчивость сайта к ошибкам и уязвимостям.
Пример комплексного решения для wp-config.php
Можно добавить в wp-config.php проверку и блокировку активации плагинов:
define('WP_DISABLE_PLUGIN_ACTIVATION', true);
if (defined('WP_DISABLE_PLUGIN_ACTIVATION') && WP_DISABLE_PLUGIN_ACTIVATION) {
add_action('activate_plugin', function($plugin) {
$blocked_plugins = ['akismet/akismet.php', 'hello-dolly/hello.php'];
if (in_array($plugin, $blocked_plugins)) {
wp_die('Активация данного плагина запрещена.');
}
});
}Это позволит централизованно управлять списком запрещённых плагинов.