Как удалить или изменить адрес страницы регистрации WooCommerce

Диагностика проблемы с адресом страницы регистрации WooCommerce

По умолчанию WooCommerce использует стандартный URL для страницы регистрации и входа — обычно это /my-account/, где форма регистрации и входа расположены на одной странице. В некоторых случаях требуется изменить адрес страницы регистрации на отдельный URL или полностью удалить страницу регистрации, например, чтобы ограничить регистрацию на сайте или использовать кастомную форму.

Чтобы определить, что у вас именно такая проблема, проверьте следующие моменты:

  • Перейдите по адресу ваш-сайт.ru/my-account/ — отображается ли форма регистрации?
  • Если вы хотите отдельный URL для регистрации — существует ли страница с нужным адресом?
  • Работает ли регистрация с текущего URL, и нет ли ошибок 404 или перенаправлений?
  • Используете ли вы стандартные настройки WooCommerce или кастомные плагины для авторизации?

Как изменить адрес страницы регистрации WooCommerce на отдельную страницу

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

Шаг 1. Создайте новую страницу регистрации

В админке WordPress создайте новую страницу, например, с названием "Регистрация", и добавьте в её содержимое следующий шорткод:

[woocommerce_my_account]

Этот шорткод выводит и форму входа, и форму регистрации, если регистрация разрешена.

Шаг 2. Отключите регистрацию на странице "Мой аккаунт" и перенаправьте пользователей

Чтобы страница /my-account/ не показывала форму регистрации, отключим регистрацию в настройках WooCommerce:

Настройки WooCommerce > Аккаунты и конфиденциальность > Регистрация на странице "Мой аккаунт" — снимите галочку с "Разрешить регистрацию на странице "Мой аккаунт"".

Добавьте в functions.php вашей темы следующий код, чтобы перенаправлять пользователей с /my-account/ на новую страницу регистрации при попытке попасть на форму регистрации:

add_action('template_redirect', function() {
    if (is_account_page() && !is_user_logged_in()) {
        // Проверяем, пытается ли пользователь открыть форму регистрации
        if (isset($_GET['action']) && $_GET['action'] === 'register') {
            wp_redirect(site_url('/registratsiya/'));
            exit;
        }
    }
});

Шаг 3. Добавьте форму регистрации на новую страницу с помощью кастомного кода

Если нужно вывести только форму регистрации без формы входа, используйте следующий код в шаблоне страницы или в плагине:

function custom_registration_form() {
    if (is_user_logged_in()) {
        return '<p>Вы уже авторизованы.</p>';
    }

    ob_start();
    woocommerce_login_form(
        array(
            'redirect' => wc_get_page_permalink('myaccount'),
            'hidden' => true,
            'form_id' => 'custom_registration'
        )
    );
    return ob_get_clean();
}
add_shortcode('custom_registration', 'custom_registration_form');

Добавьте на страницу [custom_registration] — это выведет только форму регистрации.

Как полностью удалить страницу регистрации WooCommerce

Если вы хотите полностью запретить регистрацию через WooCommerce, сделайте следующее:

  • В админке WooCommerce в разделе Аккаунты и конфиденциальность снимите галочки с всех опций регистрации.
  • Удалите страницу "Мой аккаунт" или отключите доступ к ней через редиректы.
  • С помощью кода запретите регистрацию по REST API и другим способам, например:
add_filter('woocommerce_registration_enabled', '__return_false');

add_action('init', function() {
    if (isset($_GET['register']) || isset($_POST['register'])) {
        wp_redirect(site_url('/')); // Перенаправляем на главную
        exit;
    }
});

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

  • Перейдите на новую страницу регистрации (например, /registratsiya/) — убедитесь, что форма регистрации отображается корректно.
  • Попробуйте перейти на /my-account/?action=register — должен быть редирект на новую страницу или 404, если удалили регистрацию.
  • Зарегистрируйте нового пользователя через новую форму — пользователь должен успешно создаться и получить доступ к личному кабинету.
  • Проверьте, что регистрация через REST API отключена (например, используя Postman).

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

  • Форма регистрации не отображается на новой странице — убедитесь, что регистрация разрешена в настройках WooCommerce и шорткод вставлен правильно.
  • Редирект зацикливается — проверьте условия в хуке template_redirect, чтобы не делать редирект для зарегистрированных пользователей или для правильных URL.
  • Ошибка 404 при переходе на новую страницу регистрации — обновите постоянные ссылки в настройках WordPress (Сбросьте настройки ЧПУ).
  • Регистрация работает, но пользователь не получает письма — проверьте настройки SMTP и плагин WP Mail SMTP для корректной отправки почты.

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

  • Обязательно используйте reCAPTCHA или другие методы защиты на форме регистрации, чтобы избежать спама.
  • Ограничьте количество попыток регистрации с одного IP с помощью плагинов или серверных правил.
  • Если используете кастомные формы регистрации, валидируйте все данные на стороне сервера.
  • Используйте хуки WooCommerce для расширения функционала регистрации, например, для добавления пользовательских полей:
add_action('woocommerce_register_form_start', function() {
    echo '<p><label for="reg_phone">Телефон</label><input type="text" name="phone" id="reg_phone" /></p>';
});

add_action('woocommerce_created_customer', function($customer_id) {
    if (isset($_POST['phone'])) {
        update_user_meta($customer_id, 'phone', sanitize_text_field($_POST['phone']));
    }
});

Сравнение подходов к изменению адреса регистрации WooCommerce

МетодПлюсыМинусыРекомендации
Использование стандартного шорткода [woocommerce_my_account]Простота, поддержка WooCommerceРегистрация и вход на одной страницеДля базовых сайтов без особых требований
Создание отдельной страницы с кастомной формой регистрацииКонтроль над URL, можно выделить формуНужно писать дополнительный код, поддерживатьЕсли важен отдельный URL регистрации
Полное отключение регистрацииПовышение безопасности, контроль пользователейПотеря возможности регистрации через WooCommerceДля закрытых сайтов или магазинов без регистрации
Автоподгрузка постов в WordPress без плагинов
25.03.2026
Как удалить старшее изображение при загрузке в WordPress
16.05.2026
Как запретить доступ к XML и RSS в WordPress
25.11.2025
Как изменить URL адрес постов в WordPress без пересмотра ссылок
09.11.2025
Как автоматически удалять старые отзывы в WooCommerce
22.05.2026