wpwebsite.ru wordpress WPWebSite

Изменение URL страниц регистрации и входа WordPress без плагинов

В стандартной установке 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.

×
Сделай свой сайт крутым!

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

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