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

Почему может понадобиться изменить URL страницы оплаты WooCommerce

По умолчанию URL страницы оплаты WooCommerce выглядит как https://example.com/checkout/. Иногда требуется изменить этот адрес — например, для повышения безопасности, SEO или интеграции с внешними системами. Сделать это без плагинов — значит избежать лишних зависимостей и потенциальных конфликтов.

Диагностика текущей настройки URL страницы оплаты

Для начала убедимся, что у вас стандартный URL страницы оплаты и что WooCommerce правильно распознает эту страницу.

  • Перейдите в WooCommerce → Настройки → Продвинутые → Страницы и проверьте, какая страница назначена для оплаты.
  • Запомните или скопируйте текущий slug страницы оплаты (обычно checkout).
  • Убедитесь, что на этой странице используется шорткод [woocommerce_checkout] или шаблон WooCommerce, иначе перенаправление не сработает.

Пошаговое решение: смена URL страницы оплаты через functions.php

Чтобы изменить URL страницы оплаты, нужно реализовать перенаправления и зарегистрировать новый endpoint. В WooCommerce URL страницы оплаты — это постоянная ссылка на страницу WordPress, но можно изменить slug и настроить перезапись правил.

1. Создайте новую страницу для оплаты с нужным slug

В админке WordPress создайте новую страницу, например с URL /payment/. На ней разместите шорткод [woocommerce_checkout]. Запомните ID этой страницы.

2. Перенаправьте запросы с нового URL на страницу оплаты WooCommerce

add_action('template_redirect', function() {
    if (untrailingslashit($_SERVER['REQUEST_URI']) === '/payment') {
        wp_redirect(site_url('/checkout'), 301);
        exit;
    }
});

Этот код перенаправит /payment на /checkout. Но это обратное действие — нам нужно наоборот.

3. Перенаправить старый URL на новый

add_action('template_redirect', function() {
    if (is_checkout() && !is_wc_endpoint_url()) {
        wp_redirect(site_url('/payment'), 301);
        exit;
    }
});

Этот код перенаправит вызов стандартной страницы оплаты на новый URL.

4. Измените ссылку на страницу оплаты в WooCommerce

Чтобы WooCommerce генерировал ссылки на новый адрес, используйте фильтр:

add_filter('woocommerce_get_checkout_url', function($url) {
    return site_url('/payment');
});

5. Пересоздайте правила перезаписи (rewrite rules)

Чтобы WordPress корректно обрабатывал новый URL, добавьте правило в функцию init и обновите правила:

add_action('init', function() {
    add_rewrite_rule('^payment/?$', 'index.php?pagename=payment', 'top');
});

После добавления этого кода зайдите в Настройки → Постоянные ссылки и нажмите «Сохранить», чтобы обновить правила.

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

  1. Откройте в браузере https://example.com/payment/ — должна открыться страница оплаты WooCommerce.
  2. Откройте https://example.com/checkout/ — должен произойти редирект на /payment/.
  3. Проверьте, что кнопки «Оформить заказ» и ссылки на оплату ведут на новый URL.
  4. Убедитесь, что оформление заказа работает без ошибок.

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

  • 404 на новый URL — не обновлены правила перезаписи. Зайдите в настройки постоянных ссылок и нажмите «Сохранить» без изменений.
  • Перенаправление в цикле — убедитесь, что условие в template_redirect корректно и не вызывает редирект при уже правильном URL.
  • Некорректная работа оформления заказа — проверьте, что на странице /payment/ действительно есть шорткод [woocommerce_checkout].
  • Ссылки на оплату не обновились — возможно, кэш или темы переопределяют URL. Очистите кеш и проверьте фильтр woocommerce_get_checkout_url.

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

  • Не используйте сложные многоуровневые URL для страницы оплаты — это может привести к ошибкам в WooCommerce.
  • Обновляйте правила перезаписи после любых изменений в URL.
  • Добавьте проверку nonce и SSL для страницы оплаты для повышения безопасности.
  • Минимизируйте сторонние редиректы — они замедляют процесс оформления заказа.

Сравнение способов изменения URL страницы оплаты

МетодПлюсыМинусыКомпромисс
Использование плагина (например, Custom Permalink)Простота, готовые настройкиЗависимость от плагина, возможные конфликтыБыстро, но не всегда оптимально
Изменение slug страницы и редиректы в functions.phpКонтроль, отсутствие сторонних плагиновТребует знаний, возможны ошибки в редиректахЛучшее для опытных разработчиков
Изменение через шаблон темы (переназначение шаблона)Гибкость в кастомизацииСложно, не всегда нужно изменять URLИспользовать если нужен уникальный дизайн
⭐⭐⭐⭐⭐