В стандартной установке WordPress страницы регистрации доступны по адресу wp-login.php?action=register. Это может создавать проблемы с безопасностью и удобством, особенно если вы хотите ограничить регистрацию или изменить URL для улучшения пользовательского опыта и защиты от спама. В этой статье рассмотрим, как удалить или изменить URL страницы регистрации без использования плагинов, а также варианты решения часто встречающихся задач.
Почему стоит изменить URL регистрации WordPress
Стандартный URL регистрации легко найти, что делает сайт уязвимым к автоматическим регистрациям спам-ботов. Кроме того, иногда нужно интегрировать форму регистрации в кастомный шаблон или страницу сайта с уникальным адресом, чтобы соблюсти фирменный стиль или бизнес-логику.
Изменение или отключение стандартной регистрации помогает:
- Уменьшить количество спам-аккаунтов;
- Сделать сайт более безопасным;
- Создать уникальный пользовательский опыт с кастомным URL;
- Интегрировать регистрацию в собственный дизайн.
Как отключить стандартную страницу регистрации в WordPress
Если вам нужно полностью запретить регистрацию через стандартный URL, можно сделать редирект или вывести ошибку при обращении к wp-login.php?action=register. Для этого добавим следующий код в файл functions.php вашей темы или в отдельный плагин:
function wptemplates_disable_wp_registration() {
if (isset($_GET['action']) && $_GET['action'] === 'register') {
wp_redirect(home_url());
exit;
}
}
add_action('login_init', 'wptemplates_disable_wp_registration');Этот код проверяет, если пользователи пытаются открыть страницу регистрации, их перенаправляют на главную страницу сайта. Таким образом регистрация будет недоступна с стандартного адреса.
Как создать кастомный URL страницы регистрации
Чтобы создать собственный адрес регистрации, например /custom-register, и вывести там форму регистрации, можно использовать шаблон страницы и перехватывать запросы через template_redirect. Вот пошаговое решение:
1. Создаем страницу в админке WordPress
Создайте новую страницу с ярлыком (slug) custom-register. В этой статье мы будем использовать именно этот slug.
2. Создаем шаблон страницы регистрации
Добавьте в папку темы файл page-custom-register.php со следующим кодом:
<?php
/*
Template Name: Custom Registration
*/
if ( is_user_logged_in() ) {
wp_redirect(home_url());
exit;
}
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['wptemplates_register_nonce']) && wp_verify_nonce($_POST['wptemplates_register_nonce'], 'wptemplates_register_action')) {
$errors = wptemplates_handle_registration();
} else {
$errors = new WP_Error();
}
get_header();
?>
<h1>Регистрация на сайте</h1>
<?php if ($errors->get_error_codes()) : ?>
<ul class="errors">
<?php foreach ($errors->get_error_messages() as $error) : ?>
<li><?php echo esc_html($error); ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form method="post" action="">
<p><label for="username">Имя пользователя</label><br>
<input type="text" name="username" id="username" required /></p>
<p><label for="email">Email</label><br>
<input type="email" name="email" id="email" required /></p>
<p><label for="password">Пароль</label><br>
<input type="password" name="password" id="password" required /></p>
<p><input type="hidden" name="wptemplates_register_nonce" value="<?php echo wp_create_nonce('wptemplates_register_action'); ?>" /></p>
<p><input type="submit" value="Зарегистрироваться" /></p>
</form>
<?php get_footer(); ?>
3. Обрабатываем регистрацию
Добавьте в functions.php функцию для обработки регистрации:
function wptemplates_handle_registration() {
$errors = new WP_Error();
$username = sanitize_user($_POST['username']);
$email = sanitize_email($_POST['email']);
$password = $_POST['password'];
if (empty($username) || empty($email) || empty($password)) {
$errors->add('field', 'Все поля обязательны для заполнения');
return $errors;
}
if (!validate_username($username)) {
$errors->add('username_invalid', 'Неверный формат имени пользователя');
}
if (username_exists($username)) {
$errors->add('username_exists', 'Такой пользователь уже существует');
}
if (!is_email($email)) {
$errors->add('email_invalid', 'Неверный email');
}
if (email_exists($email)) {
$errors->add('email_exists', 'Email уже зарегистрирован');
}
if (strlen($password) < 6) {
$errors->add('password_short', 'Пароль должен быть не менее 6 символов');
}
if (!empty($errors->errors)) {
return $errors;
}
$user_id = wp_create_user($username, $password, $email);
if (is_wp_error($user_id)) {
$errors->add('register_failed', 'Ошибка при создании пользователя');
return $errors;
}
// Можно автоматически залогинить пользователя после регистрации
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
wp_redirect(home_url());
exit;
return $errors;
}Дополнительные советы по безопасности
Даже при использовании кастомных форм регистрации стоит предусмотреть защиту от спама и ботов. Рекомендуется:
- Добавить CAPTCHA, например Google reCAPTCHA;
- Использовать nonce для защиты форм (как в примере выше);
- Ограничивать количество попыток регистрации;
- Проверять email на принадлежность к разрешенным доменам, если нужно;
- Следить за обновлениями безопасности WordPress.
Для добавления CAPTCHA можно использовать плагин Clearfy Pro, который поддерживает интеграцию с reCAPTCHA и улучшает безопасность сайта.
Как перенаправлять старый URL регистрации на новый
Если вы изменили URL, полезно настроить редирект со стандартного адреса, чтобы пользователи и боты не попадали на страницу регистрации по старому адресу:
function wptemplates_redirect_old_registration_url() {
if (isset($_GET['action']) && $_GET['action'] === 'register') {
wp_redirect(site_url('/custom-register/'));
exit;
}
}
add_action('login_init', 'wptemplates_redirect_old_registration_url');Этот код перенаправит все запросы на wp-login.php?action=register на ваш кастомный URL /custom-register/.
Вывод
Удаление или изменение URL страницы регистрации WordPress без плагинов — задача вполне решаемая с помощью стандартных хуков и шаблонов. Такой подход позволяет улучшить безопасность и пользовательский опыт, сохраняя контроль над процессом регистрации. При необходимости можно расширять функционал, интегрируя защиту от спама и дополнительные поля.
Для удобства управления регистрацией и безопасности рассмотрите возможность использования профессиональных плагинов с поддержкой кастомизации, например Expert Review для проверки пользователей или Clearfy Pro для оптимизации безопасности.