Стандартный URL страницы регистрации WordPress – /wp-login.php?action=register – часто становится целью для ботов и злоумышленников. Чтобы повысить безопасность сайта и уменьшить количество спама, полезно изменить URL регистрации на кастомный адрес. В этой статье мы разберём, как сделать это без использования плагинов, используя только функции WordPress и немного PHP-кода.
Почему стоит менять URL регистрации WordPress
Стандартные URL WordPress (вход, регистрация, восстановление пароля) хорошо известны и широко используются ботами для автоматических атак. Изменение URL регистрации помогает:
- Снизить количество автоматических регистраций спам-аккаунтов.
- Повысить общую безопасность сайта.
- Сделать URL более удобным и запоминающимся для пользователей.
Однако важно помнить, что изменение URL — это дополнительная мера безопасности, а не замена комплексной защиты.
Как изменить URL регистрации без плагинов: подробное решение
Главная идея — перехватить запросы к стандартному URL регистрации и перенаправить их на новый. Также нужно добавить обработчик для нового URL, чтобы форма регистрации отображалась корректно и данные обрабатывались.
Шаг 1. Добавление rewrite-правила
Добавим правило для ЧПУ (человеко-понятного URL), например, /register-new вместо стандартного /wp-login.php?action=register:
function wptemplates_add_rewrite_rules() {
add_rewrite_rule('^register-new/?$', 'wp-login.php?action=register', 'top');
}
add_action('init', 'wptemplates_add_rewrite_rules');После добавления правила необходимо перезаписать правила пермалинков — зайдите в админке WordPress в Настройки > Постоянные ссылки и просто нажмите «Сохранить изменения» без изменения настроек.
Шаг 2. Перенаправление со старого URL регистрации
Чтобы стандартный URL регистрации не был доступен, сделаем перенаправление на новый адрес:
function wptemplates_redirect_default_register_url() {
if (isset($_GET['action']) && $_GET['action'] === 'register' && strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
wp_redirect(site_url('/register-new'));
exit;
}
}
add_action('login_init', 'wptemplates_redirect_default_register_url');Этот код перехватывает попытки открыть стандартный URL регистрации и перенаправляет пользователя на новый.
Шаг 3. Проверка формы регистрации и обработка данных
Так как мы просто перенаправляем на стандартный файл wp-login.php?action=register, форма и логика регистрации будут работать без изменений. Но если хотите полностью кастомизировать форму регистрации, можно создать отдельный шаблон или страницу с формой и обрабатывать регистрацию через хук register_post или собственный обработчик.
Дополнительные рекомендации по безопасности
Изменение URL регистрации — хорошая мера, но не панацея. Чтобы усилить защиту, рекомендуем:
- Использовать плагины, такие как Clearfy Pro, которые помогут скрыть стандартные страницы WordPress.
- Добавить капчу на форму регистрации для снижения спама.
- Ограничить количество попыток регистрации с одного IP-адреса.
- Регулярно обновлять WordPress и плагины для закрытия уязвимостей.
Пример кастомной формы регистрации на отдельной странице
Если хотите сделать регистрацию полностью настраиваемой, можно создать страницу с формой и обрабатывать её через AJAX или POST-запрос. Пример простой формы регистрации:
<form method="post" action="">
<label for="wptemplates_user_login">Логин</label>
<input type="text" name="wptemplates_user_login" id="wptemplates_user_login" required>
<label for="wptemplates_user_email">Email</label>
<input type="email" name="wptemplates_user_email" id="wptemplates_user_email" required>
<label for="wptemplates_user_pass">Пароль</label>
<input type="password" name="wptemplates_user_pass" id="wptemplates_user_pass" required>
<input type="submit" name="wptemplates_register_submit" value="Зарегистрироваться">
</form>Обработка данных в functions.php:
function wptemplates_handle_custom_registration() {
if (isset($_POST['wptemplates_register_submit'])) {
$login = sanitize_user($_POST['wptemplates_user_login']);
$email = sanitize_email($_POST['wptemplates_user_email']);
$pass = $_POST['wptemplates_user_pass'];
$errors = new WP_Error();
if (empty($login) || empty($email) || empty($pass)) {
$errors->add('field', 'Не все поля заполнены');
}
if (username_exists($login)) {
$errors->add('user_exists', 'Пользователь с таким логином уже существует');
}
if (!is_email($email)) {
$errors->add('email_invalid', 'Неверный формат email');
}
if (email_exists($email)) {
$errors->add('email_exists', 'Пользователь с таким email уже существует');
}
if (empty($errors->errors)) {
$user_id = wp_create_user($login, $pass, $email);
if (!is_wp_error($user_id)) {
wp_redirect(site_url('/wp-login.php?registered=true'));
exit;
} else {
echo '<p>Ошибка регистрации: ' . $user_id->get_error_message() . '</p>';
}
} else {
foreach ($errors->get_error_messages() as $error) {
echo '<p>' . esc_html($error) . '</p>';
}
}
}
}
add_action('init', 'wptemplates_handle_custom_registration');Такой подход позволяет полностью контролировать процесс регистрации и URL.
Выводы и рекомендации
Изменение URL регистрации повышает безопасность сайта и снижает риски спама. Реализовать это можно без плагинов, используя rewrite-правила и редиректы. Если нужно больше контроля — стоит рассмотреть создание кастомной страницы с формой регистрации.
Для комплексной защиты рекомендуем комбинировать этот метод с плагинами безопасности и другими мерами. Например, Clearfy Pro отлично дополняет такие настройки.