Как изменить URL страницы регистрации WooCommerce без плагинов

Диагностика проблемы: зачем менять URL страницы регистрации WooCommerce

Стандартный URL регистрации в WooCommerce обычно выглядит как https://example.com/my-account/ с формой регистрации в одном месте. Это создает несколько проблем на практике:

  • Отсутствие отдельного URL для регистрации затрудняет SEO-оптимизацию и таргетинг на рекламные кампании.
  • Стандартный URL "my-account" часто становится целью брутфорс-атак и сканирования, что создает угрозу безопасности.
  • Некоторым проектам требуется отдельная страница с уникальным дизайном и URL для регистрации.

Поэтому задача — изменить URL страницы регистрации WooCommerce на кастомный, например, /register/ без установки дополнительных плагинов.

Шаги по изменению URL страницы регистрации WooCommerce

1. Отключение стандартной регистрации на странице «Мой аккаунт»

WooCommerce выводит форму регистрации и входа на странице "my-account" по умолчанию. Чтобы убрать регистрацию с этой страницы, нужно отключить регистрацию в настройках и шаблонах.

add_filter('woocommerce_enable_myaccount_registration', '__return_false');

Добавьте этот код в файл functions.php вашей дочерней темы или в кастомный плагин.

2. Создание новой страницы с кастомным URL для регистрации

Создайте в админке WordPress страницу с ярлыком (slug) register. В контенте страницы код вставлять не нужно — регистрация будет выведена программно.

3. Добавление шорткода и кастомного обработчика формы регистрации

WooCommerce не предоставляет отдельного шорткода регистрации, поэтому нужно вручную вызвать функцию регистрации, используя стандартные хуки и фильтры.

В functions.php добавьте следующий код для вывода формы регистрации на странице register:

function custom_woocommerce_registration_form() {
    if ( is_page('register') ) {
        wc_get_template('myaccount/form-register.php');
    }
}
add_action('the_content', 'custom_woocommerce_registration_form');

Этот код подключит стандартный шаблон регистрации WooCommerce на странице register.

4. Перенаправление регистрации на новый URL

Когда пользователь пытается зарегистрироваться через стандартную страницу, нужно перенаправлять его на новую страницу регистрации.

function redirect_registration_to_custom_url() {
    if ( is_account_page() && isset($_GET['action']) && 'register' === $_GET['action'] ) {
        wp_safe_redirect(site_url('/register/'));
        exit;
    }
}
add_action('template_redirect', 'redirect_registration_to_custom_url');

Это убережет пользователей от попадания на старую страницу регистрации.

Проверка результата после внедрения

  • Откройте адрес https://example.com/register/ — должна отображаться форма регистрации WooCommerce.
  • Попытка перейти на https://example.com/my-account/?action=register должна перенаправлять на новый URL.
  • Попытка регистрации через страницу my-account должна быть отключена.
  • Проверьте регистрацию с новым URL: создайте тестового пользователя и убедитесь, что процесс работает корректно.

Частые ошибки и как их исправить

  • Форма не отображается на странице /register/: проверьте, правильно ли указан slug страницы и подключен ли хук the_content в теме.
  • Регистрация доступна и на старой странице: убедитесь, что фильтр woocommerce_enable_myaccount_registration возвращает false.
  • Ошибка редиректа или зацикливание: проверьте условие в redirect_registration_to_custom_url, чтобы оно срабатывало только при точном совпадении URL.
  • Пользователь не создается после отправки формы: проверьте логи ошибок и убедитесь, что WooCommerce корректно обрабатывает регистрацию.

Практические советы по безопасности и производительности

  • Защита от брутфорс-атак: изменив URL регистрации, вы снижаете риск автоматических атак, но дополнительно стоит использовать ограничение попыток входа (например, через .htaccess или серверные правила).
  • Кэширование: не кэшируйте страницы с формой регистрации, чтобы избежать проблем с сессиями и CSRF-токенами.
  • SSL: обязательно используйте HTTPS для всех страниц регистрации и входа.
  • Обновление WooCommerce: при обновлении WooCommerce проверяйте, не изменились ли шаблоны форм регистрации, чтобы не нарушить работу кастомного решения.

Сравнение вариантов решения

МетодПлюсыМинусыКомпромиссы
Использование плагина для изменения URLПростота, быстрый запускЗависимость от стороннего кода, нагрузка, возможные конфликтыУдобно для новичков, но менее гибко
Ручное изменение через код (описано в статье)Полный контроль, минимум зависимостей, лучшее понимание процессаТребуется знание PHP и WooCommerceОптимально для разработчиков и кастомных проектов
⭐⭐⭐⭐⭐