Почему может понадобиться изменить 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');
});После добавления этого кода зайдите в Настройки → Постоянные ссылки и нажмите «Сохранить», чтобы обновить правила.
Проверка результата после внедрения
- Откройте в браузере
https://example.com/payment/— должна открыться страница оплаты WooCommerce. - Откройте
https://example.com/checkout/— должен произойти редирект на/payment/. - Проверьте, что кнопки «Оформить заказ» и ссылки на оплату ведут на новый URL.
- Убедитесь, что оформление заказа работает без ошибок.
Частые ошибки и как их исправить
- 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 | Использовать если нужен уникальный дизайн |