В некоторых случаях владельцам сайтов на WordPress необходимо отключить регистрацию новых пользователей — например, чтобы предотвратить спам-атаки, снизить нагрузку или ограничить доступ. В этой статье мы подробно разберём, как удалить стандартную страницу регистрации, заблокировать регистрацию через формы и REST API, а также какие плагины помогут решить эту задачу.
Почему важно контролировать регистрацию пользователей в WordPress
WordPress по умолчанию позволяет посетителям регистрироваться на сайте, если опция Членство: Любой может зарегистрироваться включена в настройках. Это удобно для сайтов с сообществом, но на многих ресурсах регистрация нужна только администраторам или вовсе не нужна.
Оставленная открытой регистрация часто становится причиной:
- Спам-ботов, создающих тысячи бесполезных аккаунтов.
- Злоумышленников, пытающихся получить доступ к админке.
- Увеличенной нагрузки на сервер.
Чтобы защититься, нужно либо полностью отключить регистрацию, либо применить фильтры и блокировки на уровне кода и плагинов.
Отключение регистрации через настройки WordPress
Самый простой способ — зайти в админку WordPress в Настройки > Общие и снять галочку с опции Любой может зарегистрироваться. Это простое решение, однако не всегда эффективное:
- Если на сайте уже есть страницы регистрации, они останутся доступными.
- Регистрация может быть открыта через REST API.
- Некоторые кастомные формы регистрации могут работать независимо от этой настройки.
Поэтому далее рассмотрим, как программно и с помощью плагинов заблокировать регистрацию полностью.
Блокировка регистрации пользователей через functions.php
Чтобы полностью отключить регистрацию на уровне WordPress, можно использовать фильтр register или хук wp_authenticate. Вот простой пример функции для wpbit, которая запрещает регистрацию и перенаправляет пользователя на главную страницу:
function wpbit_disable_user_registration() {
if ( isset($_GET['action']) && $_GET['action'] === 'register' ) {
wp_redirect(home_url());
exit;
}
}
add_action('login_init', 'wpbit_disable_user_registration');Этот код проверяет, если пользователь пытается открыть страницу регистрации (wp-login.php?action=register), его перенаправляют на главную.
Отключение регистрации через REST API
WordPress REST API также может позволять регистрацию, если она включена. Чтобы её заблокировать, добавим фильтр:
function wpbit_disable_rest_user_registration( $allowed ) {
return false;
}
add_filter( 'rest_user_can_register', 'wpbit_disable_rest_user_registration' );Это гарантирует, что внешние REST-запросы не смогут зарегистрировать пользователя.
Удаление или переадресация страницы регистрации с помощью плагинов
Если вы предпочитаете готовые решения, обратите внимание на следующие плагины:
- Disable User Registration — простой плагин для отключения регистрации. Он автоматически скрывает страницы регистрации и блокирует REST API регистрацию.
- WP Cerber Security — мощный плагин безопасности, который позволяет детально настраивать регистрацию, блокировать спам и ботов.
- Clearfy Pro — плагин оптимизации и безопасности, в котором есть функция отключения регистрации и защиты от спама. Подробнее на wpshop.ru.
Эти плагины подходят как для новичков, так и для опытных разработчиков, позволяя гибко управлять доступом.
Удаление ссылок на регистрацию и формы из темы
Если в вашей теме есть ссылки на регистрацию или виджеты форм, их стоит убрать, иначе пользователи будут видеть возможность зарегистрироваться, даже если функция отключена.
Для удаления ссылок, например, в меню, можно воспользоваться фильтрами меню или настроить меню в админке. Для удаления виджетов с формами регистрации — удалите соответствующие виджеты в Внешний вид > Виджеты.
Если регистрационные формы встроены через шорткоды или PHP-код, их можно отключить через override функций темы в functions.php:
function wpbit_remove_registration_shortcode() {
remove_shortcode( 'register_form' );
}
add_action( 'init', 'wpbit_remove_registration_shortcode' );Дополнительные меры безопасности при отключении регистрации
После отключения регистрации рекомендуется:
- Ограничить доступ к wp-login.php и wp-admin через .htaccess или IP-фильтры.
- Использовать двухфакторную аутентификацию для администраторов.
- Мониторить попытки входа с помощью плагинов безопасности, например, WP Cerber.
Пример ограничения доступа к wp-login.php по IP (в .htaccess)
<Files wp-login.php>
order deny,allow
deny from all
allow from 123.45.67.89
</Files>Замените 123.45.67.89 на ваш IP-адрес.
Итоговые рекомендации
Отключение и блокировка регистрации пользователей в WordPress — важный шаг для многих сайтов. Используйте сочетание настроек, кода и плагинов для комплексной защиты. Если хотите гибко управлять регистрацией и безопасностью, советую обратить внимание на Clearfy Pro, который упрощает многие задачи.