Простой сниппет для WordPress, который не даст вашим клиентам угробить их сайт, деактивировав критически важные плагины.

Когда это не микроменеджмент#

На клиентском WordPress-сайте часть плагинов может быть частью архитектуры: формы, кастомные поля, платежи, мультиязычность, SEO, кеширование. Если такой плагин выключить случайно, ломается не «плагин», а бизнес-функция.

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

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

Разместите сниппет в файле functions.php в вашей WordPress-теме:

function webzaytsev_disable_deliting(
  $actions,
  $plugin_file,
  $plugin_data,
  $context,
) {
  // Удалить ссылку редактирования исходного кода
  // для всех плагинов
  if (array_key_exists("edit", $actions)) {
    unset($actions["edit"]);
  }

  // Массив важных плагинов
  $important_plugins = array(
    "wpmu-dev-plusone/plusone.php",
    "plugin-folder-name/plugin.php",
  );

  // Удалить ссылку деактивирования у
  // критически важных плагинов
  if (
    array_key_exists("deactivate", $actions) &&
    in_array($plugin_file, $important_plugins)
  ) {
    unset($actions["deactivate"]);
  }

  return $actions;
}
add_filter("plugin_action_links", "webzaytsev_disable_deliting", 10, 4);

Для правильной работы сниппета добавьте в массив $important_plugins список ваших плагинов в формате: папка_плагина/имя_плагина.php.

Что не забыть#

  • Список $important_plugins нужно держать в актуальном состоянии после переименования папок и обновления плагинов.
  • Это не защита от администратора с доступом к FTP, SSH или базе данных. Сниппет защищает от случайного действия в интерфейсе.
  • Для крупных проектов лучше дополнить это ролями, staging-контуром и резервной копией перед обновлениями.

Если WordPress-сайт зависит от критичных плагинов, прав доступа и пары «не трогать руками», это лучше закрепить технически, а не надеждой на внимательность. Напишите мне в Telegram или на почту — помогу настроить роли, ограничения и защиту от случайных действий, которые кладут продакшен.