Как избежать случайной деактивации важных плагинов WordPress

Как предотвратить деактивацию важных плагинов?

Когда мы добавляем функционал на сайт, часто используем плагины для ускорения разработки. Владельцы сайтов иногда могут отключать необходимые плагины, что приводит к утрате важной функциональности или даже поломке сайта. В этой статье мы расскажем, как избежать таких ситуаций.

Зачем это нужно?

Если у вас есть плагин, от которого зависит работа сайта, лучше всего убрать кнопку "Деактивировать". Также можно убрать галочку, позволяющую деактивировать плагины в массовых действиях.

Скриншот интерфейса плагинов

На этом скриншоте видно, что:

  • Кнопка "Деактивировать" и галочка отсутствуют для плагинов: 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 ){
?>

}

Как работает код

  1. Если плагин важный, кнопка "Деактивировать" убирается.
  2. Убирается возможность редактирования всех плагинов и галочка массовых действий.
  3. Нет необходимости проверять наличие ключа перед использованием unset(), если ключ отсутствует, ошибки не возникнет.

Пояснение переменных

  • $actions — массив ссылок для действий пл��гина:
Array (
    [0] => Настройки
    [deactivate] => Деактивировать
    [edit] => Редактировать
)
  • $plugin_file — путь к главному файлу плагина.

Пример:

contact-form-7/wp-contact-form-7.php

Этот путь можно получить, скопировав его из атрибута data-plugin при просмотре исходного кода страницы.

Заключение

Измените список важных плагинов в переменной $important_plugins, и забудьте о ненужных проблемах с клиентами. Используйте этот метод, чтобы защитить свой сайт от случайной деактивации важных плагинов!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *