Как запретить удаление пользователей в WordPress для повышения безопасности

Почему важно ограничить удаление пользователей в WordPress

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

Диагностика проблемы: кто и как удаляет пользователей

Перед внедрением ограничений важно понять, кто именно имеет право удалять пользователей. Обычно это администраторы. Проверьте текущие роли и их возможности с помощью плагина User Role Editor или вручную:

function check_user_capabilities() {
    $user = wp_get_current_user();
    error_log(print_r($user->allcaps, true));
}
add_action('init', 'check_user_capabilities');

Это позволит увидеть, есть ли у пользователя право delete_users.

Пошаговое решение: запретить удаление пользователей для определенных ролей

1. Отключаем capability delete_users для роли администратора

Если нужно полностью запретить удаление, можно убрать capability у роли:

function disable_delete_users_capability() {
    $role = get_role('administrator');
    if ($role->has_cap('delete_users')) {
        $role->remove_cap('delete_users');
    }
}
add_action('init', 'disable_delete_users_capability');

2. Запретить удаление определенных пользователей по ID

Иногда нужно запретить удаление ключевых пользователей (например, главного администратора), вне зависимости от роли:

function block_specific_user_deletion($user_id) {
    $forbidden_ids = [1, 2]; // ID пользователей, которых нельзя удалять
    if (in_array($user_id, $forbidden_ids)) {
        wp_die('Удаление этого пользователя запрещено.');
    }
}
add_action('delete_user', 'block_specific_user_deletion');

3. Добавить проверку в админке для скрытия кнопки удаления

Чтобы UX был удобным, удаление можно скрыть через CSS и JavaScript, чтобы администраторы не видели кнопку удаления для защищенных пользователей:

function hide_delete_button_for_protected_users() {
    global $pagenow;
    if ($pagenow === 'users.php') {
        ?>
        <style>
        tr#user-1 .submitdelete, /* для пользователя с ID 1 */
        tr#user-2 .submitdelete {
            display: none !important;
        }
        </style>
        <?php
    }
}
add_action('admin_head', 'hide_delete_button_for_protected_users');

Проверка результата после внедрения

  • Попробуйте удалить пользователя с ID из списка запрещенных — операция должна прерваться с сообщением об ошибке.
  • Проверьте, что у администраторов нет возможности удалить пользователей через панель управления.
  • Убедитесь, что кнопки удаления для защищенных пользователей не отображаются в списке пользователей.

Частые ошибки и их исправление

  • Удаление все еще доступно несмотря на код: Проверьте приоритет хука и убедитесь, что код подключен в правильном месте (например, в functions.php активной темы или в собственном плагине).
  • Кнопка удаления не скрывается: Проверьте правильность ID пользователей, а также убедитесь, что CSS не переопределяется другими стилями админки.
  • Ошибка при удалении не выводится корректно: Используйте wp_die() с понятным сообщением, чтобы пользователь получил обратную связь.

Практические советы по безопасности и производительности

  • Не удаляйте по умолчанию capability delete_users у роли администратора без крайней необходимости — лучше ограничить удаление конкретных пользователей.
  • Для крупных проектов используйте аудит логов действий (плагин или свой код), чтобы отслеживать попытки удаления пользователей.
  • Регулярно обновляйте WordPress и плагины для снижения рисков уязвимостей, связанных с управлением пользователями.

Сравнение подходов: плагин vs код

МетодПлюсыМинусы
Плагин (например, User Role Editor)Простота настройки, визуальный интерфейс, гибкостьДополнительная нагрузка, возможные конфликты
Код в functions.phpЛегковесность, полный контроль, нет зависимости от сторонних решенийТребует навыков программирования, ошибки могут привести к сбоям
Отладка проблем входа в WordPress при использовании WooCommerce
01.07.2026
Как исправить ошибку 429 Too Many Requests при входе в WordPress
15.06.2026
Диагностика и решение проблем с выходом из WordPress: как исправить некорректный logout
26.05.2026
Как удалить блокировку входа после Limit Login Attempts в WordPress
03.06.2026
Как изменить метод авторизации в WordPress на токены для повышения безопасности
31.12.2025

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.