Как предотвратить деактивацию важных плагинов?
Когда мы добавляем функционал на сайт, часто используем плагины для ускорения разработки. Владельцы сайтов иногда могут отключать необходимые плагины, что приводит к утрате важной функциональности или даже поломке сайта. В этой статье мы расскажем, как избежать таких ситуаций.
Зачем это нужно?
Если у вас есть плагин, от которого зависит работа сайта, лучше всего убрать кнопку "Деактивировать". Также можно убрать галочку, позволяющую деактивировать плагины в массовых действиях.
На этом скриншоте видно, что:
- Кнопка "Деактивировать" и галочка отсутствуют для плагинов: Advanced Custom Fields PRO и Contact Form 7.
- Кнопка "Редактировать" тоже убрана для всех плагинов, что можно сделать с помощью константы DISALLOW_FILE_EDIT, полностью запрещающей редактирование файлов.
Как это сделать
Используем хуки WordPress
Все это можно сделать с помощью хука plugin_action_links
. Приведем пример кода:
add_filter( 'plugin_action_links', 'disable_plugin_deactivation', 10, 2 );
function disable_plugin_deactivation( $actions, $plugin_file ) {
// Убираем действие "Редактировать" для всех плагинов
unset( $actions['edit'] );
// Убираем действие "Деактивировать" для важных плагинов
$important_plugins = array(
'advanced-custom-fields-pro/acf.php',
'contact-form-7/wp-contact-form-7.php',
);
if ( in_array( $plugin_file, $important_plugins ) ) {
unset( $actions['deactivate'] );
$actions[ 'info' ] = 'Важно для работы сайта';
}
return $actions;
}
Убираем массовые действия
Для удаления массовых действий, таких как "Деактивировать" и "Удалить", используем другой хук:
add_filter( 'admin_print_footer_scripts-plugins.php', 'disable_plugin_deactivation_hide_checkbox' );
function disable_plugin_deactivation_hide_checkbox( $actions ){
?>
}
Как работает код
- Если плагин важный, кнопка "Деактивировать" убирается.
- Убирается возможность редактирования всех плагинов и галочка массовых действий.
- Нет необходимости проверять наличие ключа перед использованием
unset()
, если ключ отсутствует, ошибки не возникнет.
Пояснение переменных
- $actions — массив ссылок для действий пл��гина:
Array (
[0] => Настройки
[deactivate] => Деактивировать
[edit] => Редактировать
)
- $plugin_file — путь к главному файлу плагина.
Пример:
contact-form-7/wp-contact-form-7.php
Этот путь можно получить, скопировав его из атрибута data-plugin
при просмотре исходного кода страницы.
Заключение
Измените список важных плагинов в переменной $important_plugins
, и забудьте о ненужных проблемах с клиентами. Используйте этот метод, чтобы защитить свой сайт от случайной деактивации важных плагинов!