wpmake.ru wordpress WPMake

Как запретить создание новых пользователей из админки WordPress

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

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

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

Как проверить, что создание пользователей в админке доступно

Для начала убедитесь, что у вас есть доступ к странице добавления пользователей:

  • Войдите в админку как администратор;
  • Перейдите в меню Пользователи > Добавить нового;
  • Если страница открывается и позволяет создавать учетные записи — ограничения отсутствуют.

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

Для ограничения создадим простой сниппет, который уберет пункт меню «Добавить нового» и запретит доступ напрямую к странице создания пользователя.

1. Удаление пункта меню «Добавить нового»

add_action('admin_menu', function() {
    if (current_user_can('administrator')) {
        remove_submenu_page('users.php', 'user-new.php');
    }
});

Этот код удалит пункт меню «Добавить нового» для администраторов, но не запретит прямой доступ.

2. Запрет прямого доступа к странице создания пользователя

add_action('admin_init', function() {
    if (is_admin() && isset($_GET['page']) === false && isset($_GET['user-new']) === false) {
        if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], 'user-new.php') !== false) {
            if (current_user_can('administrator')) {
                wp_die('Создание новых пользователей запрещено.');
            }
        }
    }
});

Этот хук проверяет URL и блокирует доступ напрямую по адресу user-new.php.

3. Объединенный и улучшенный вариант

add_action('admin_menu', function() {
    if (current_user_can('administrator')) {
        remove_submenu_page('users.php', 'user-new.php');
    }
});

add_action('admin_init', function() {
    if (current_user_can('administrator') && isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], 'user-new.php') !== false) {
        wp_die('Создание новых пользователей через админку запрещено.');
    }
});

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

  • Обновите страницу админки «Пользователи» и убедитесь, что пункта «Добавить нового» больше нет;
  • Попробуйте вручную перейти по URL /wp-admin/user-new.php — должна появиться ошибка с сообщением;
  • Проверьте, что другие административные функции работают корректно.

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

  • Пункт меню не исчезает: Возможно, другой плагин повторно добавляет пункт. Проверьте при отключенных плагинах или используйте поздний приоритет для admin_menu (например, 999).
  • Ошибка блокировки доступа не появляется: Убедитесь, что проверка strpos($_SERVER['REQUEST_URI'], 'user-new.php') работает корректно и что код запускается в admin_init.
  • Запрет мешает другим функциям: Если сайт использует кастомные страницы добавления пользователей, учтите их в условии, чтобы не блокировать их случайно.

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

  • Если вы хотите полностью отключить регистрацию пользователей, лучше использовать настройку Settings > General > Anyone can register и отключить ее.
  • Для более гибкого контроля создайте отдельную роль с правами создания пользователей и назначьте ее только доверенным лицам.
  • Храните сниппеты в дочерней теме или в отдельном плагине, чтобы не потерять при обновлениях.

Альтернативные подходы: плагин vs код

МетодПреимуществаНедостатки
Сниппет кодаЛегко кастомизировать, не требует сторонних плагинов, быстро работаетТребует базовых знаний PHP, может конфликтовать с другими плагинами
Плагин User Role Editor или подобныеГрафический интерфейс управления правами, удобствоДополнительная нагрузка на сайт, возможность конфликтов
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙