В стандартной установке WordPress URL страниц регистрации и входа выглядят как wp-login.php или wp-register.php. Иногда возникает необходимость изменить эти адреса по соображениям безопасности, удобства или брендинга. В этой статье подробно рассмотрим, как изменить URL страниц регистрации и входа WordPress без использования плагинов, используя собственные хуки и функции.
Почему важно изменить URL регистрации и входа WordPress
Открытые стандартные URL для регистрации и входа в WordPress часто становятся целью брутфорс-атак, что может негативно сказаться на безопасности сайта. Изменение URL снижает риск автоматических попыток взлома и позволяет сделать сайт более уникальным.
Кроме того, кастомный URL помогает интегрировать процесс регистрации и входа в дизайн и структуру вашего сайта, повышая удобство для пользователей.
Хотя на рынке существует множество плагинов для изменения URL входа (например, Clearfy Pro), в ряде случаев разумно обойтись собственными решениями для минимизации нагрузки и зависимости от сторонних расширений.
Как работает стандартный вход и регистрация в WordPress
Стандартные URL для входа и регистрации — это файлы wp-login.php и wp-register.php. При обращении к этим страницам WordPress обрабатывает соответствующие действия: вход пользователя, выход, регистрация, восстановление пароля и т.д.
Переадресация или изменение URL требует вмешательства на уровне маршрутизации запросов и фильтрации запросов, чтобы WordPress не выдал ошибку 404.
Чтобы изменить URL без плагинов, нам нужно:
- Перехватить запрос на стандартный URL;
- Перенаправить или обработать новые URL;
- Сделать так, чтобы WordPress знал о новых адресах регистрации и входа.
Изменение URL входа и регистрации с помощью функций в functions.php
Ниже приведён пример кода, который меняет URL входа и регистрации, используя хуки login_url и register_url, а также обработку запросов через init. Добавьте этот код в файл functions.php вашей темы или в файл собственного плагина.
function wpwebsite_change_login_register_url() {
// Новый слаг для входа и регистрации
$login_slug = 'vhod';
$register_slug = 'registratsiya';
// Получаем текущий запрос
$request = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
// Перенаправление со стандартных URL
if ($request === 'wp-login.php') {
wp_redirect(home_url('/' . $login_slug . '/'));
exit;
}
if ($request === 'wp-register.php') {
wp_redirect(home_url('/' . $register_slug . '/'));
exit;
}
// Обработка новых URL
if ($request === $login_slug) {
require_once ABSPATH . 'wp-login.php';
exit;
}
if ($request === $register_slug) {
require_once ABSPATH . 'wp-login.php';
exit;
}
}
add_action('init', 'wpwebsite_change_login_register_url');
// Фильтры для ссылок входа и регистрации
function wpwebsite_login_url_filter($login_url, $redirect, $force_reauth) {
return home_url('/vhod/');
}
add_filter('login_url', 'wpwebsite_login_url_filter', 10, 3);
function wpwebsite_register_url_filter($register_url) {
return home_url('/registratsiya/');
}
add_filter('register_url', 'wpwebsite_register_url_filter');В этом примере мы меняем URL входа на /vhod/, а регистрации — на /registratsiya/. При обращении к стандартным адресам пользователя автоматически редиректит на новые. При обращении к новым URL подключается стандартный скрипт WordPress для обработки формы входа или регистрации.
Обратите внимание, что WordPress выполняет регистрацию по адресу wp-login.php?action=register, поэтому при обращении к /registratsiya/ фактически вызывается тот же скрипт, но с параметром action=register. Для корректной работы можно расширить код, чтобы передавать GET-параметры:
if (strpos($request, 'registratsiya') === 0) {
$_GET['action'] = 'register';
require_once ABSPATH . 'wp-login.php';
exit;
}Добавление правил для ЧПУ (Человеко-Понятных URL) в .htaccess
Чтобы новые URL работали корректно, необходимо добавить перенаправления на уровне веб-сервера. Для Apache это делается через файл .htaccess, расположенный в корне сайта.
Добавьте следующие строки в начало .htaccess (до стандартных правил WordPress):
# Перенаправление стандартных URL входа и регистрации на новые
RewriteRule ^wp-login\.php$ /vhod/ [R=301,L]
RewriteRule ^wp-register\.php$ /registratsiya/ [R=301,L]Это гарантирует, что даже при прямом обращении к wp-login.php пользователь будет перенаправлен на кастомный URL.
Как обрабатывать ссылки на вход и регистрацию в шаблонах
Для вывода ссылок на вход и регистрацию в теме используйте встроенные фильтры, которые мы добавили выше. Например:
<a href="<?php echo wp_login_url(); ?>">Вход</a>
<a href="<?php echo wp_registration_url(); ?>">Регистрация</a>Таким образом, ссылки автоматически укажут на новые URL и не потребуют ручного редактирования.
Возможные сложности и рекомендации
Так как мы используем обход стандартных маршрутов WordPress, важно помнить:
- При обновлениях WordPress может измениться механизм обработки
wp-login.php— проверяйте работоспособность кастомных URL после обновлений. - Если ваш сайт использует кэширование, очистите кеш после внесения изменений.
- При использовании плагинов безопасности или кеша убедитесь, что они не блокируют новые URL.
- Для более сложных сценариев можно реализовать собственный шаблон страницы входа и регистрации и подключать его через rewrite API WordPress.
Использование rewrite API для продвинутого управления URL
Если хочется полностью контролировать адреса и процесс авторизации, можно добавить правило перезаписи URL через WordPress rewrite API. Пример:
function wpwebsite_add_rewrite_rules() {
add_rewrite_rule('^vhod/?$', 'wp-login.php', 'top');
add_rewrite_rule('^registratsiya/?$', 'wp-login.php?action=register', 'top');
}
add_action('init', 'wpwebsite_add_rewrite_rules');
function wpwebsite_flush_rewrite_rules() {
flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wpwebsite_flush_rewrite_rules');После добавления правил не забудьте обновить постоянные ссылки в админке (Настройки —> Постоянные ссылки), чтобы применить новые правила.
Заключение по изменению URL входа и регистрации без плагинов
Изменение URL страниц входа и регистрации WordPress без плагинов возможно и достаточно эффективно для повышения безопасности и кастомизации сайта. При этом важно правильно настроить перенаправления и фильтры, чтобы сохранить корректную работу стандартного функционала.
Если вы хотите более удобные и расширенные инструменты, обратите внимание на Clearfy Pro, который предлагает готовые решения для изменения URL входа и регистрации, а также множество других полезных функций для оптимизации и безопасности WordPress.