В WooCommerce лишняя страница корзины часто только мешает: покупатель добавил товар и хочет сразу перейти к оплате, а не делать ещё один клик. На небольших магазинах это особенно заметно, когда корзина не несёт отдельной ценности и используется только как промежуточный шаг.
Ниже разберём рабочую схему: как убрать корзину из пользовательского сценария, что именно ломается при такой настройке, как проверить результат и какие ошибки чаще всего всплывают после внедрения.
Когда отключение корзины действительно уместно
Этот подход подходит не всем магазинам. Он хорошо работает, если у вас:
- один или несколько товаров без сложной комплектации;
- простая логика покупки без сравнения позиций;
- минимум кросс-селлов и апселлов на этапе корзины;
- задача сократить путь до оформления заказа.
Если корзина используется как полноценный этап с промокодами, выбором доставки по нескольким позициям или дополнительными товарами, лучше не убирать её полностью. В таком случае можно ограничиться редиректом только для части сценариев.
Диагностика: что сейчас происходит в магазине
Перед изменениями проверьте, как именно у вас работает WooCommerce. Часто проблема не в самой корзине, а в том, что тема или плагин уже вмешиваются в поведение кнопки Добавить в корзину.
Проверьте базовые настройки WooCommerce
Откройте WooCommerce → Настройки → Товары. В зависимости от версии WooCommerce и набора расширений там может быть опция перенаправления после добавления товара в корзину. Если она есть, это самый безопасный первый шаг: вы меняете поведение без кода.
Также посмотрите, не используется ли отдельный плагин для ускорения оформления заказа. Иногда он уже подменяет стандартный маршрут и конфликтует с ручным редиректом.
Проверьте, не завязана ли тема на страницу корзины
Некоторые темы и конструкторы выводят мини-корзину, счётчик товаров и кнопки перехода на корзину в шапке. Если вы отключите страницу, но оставите ссылки на неё в меню, получите 404 или пустой экран. Поэтому сначала найдите все места, где используется URL корзины.
- меню сайта;
- виджеты и блоки в шапке;
- кнопки в карточке товара;
- ссылки в письмах и шаблонах темы;
- кастомные скрипты, которые ведут на
/cart/.
Пошаговое решение без плагинов
Надёжный вариант — оставить страницу корзины в WooCommerce, но перенаправлять пользователя сразу на оформление заказа. Это меньше ломает совместимость, чем попытка физически удалить корзину из системы.
Добавьте код в functions.php дочерней темы или в собственный мини-плагин.
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
} );
add_action( 'template_redirect', function() {
if ( function_exists( 'is_cart' ) && is_cart() ) {
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
} );Что делает этот код:
- после добавления товара в корзину пользователь сразу попадает на checkout;
- если кто-то откроет страницу корзины вручную, его тоже перенаправит на оформление заказа;
- URL корзины остаётся существовать для внутренних нужд WooCommerce, но не используется как пользовательская точка входа.
Если вам нужно оставить корзину доступной для админов или для части сценариев, можно добавить исключение:
add_action( 'template_redirect', function() {
if ( is_admin() || wp_doing_ajax() ) {
return;
}
if ( function_exists( 'is_cart' ) && is_cart() && ! current_user_can( 'manage_woocommerce' ) ) {
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
} );Если нужен вариант через настройки или плагин
Иногда код не нужен вообще. Если задача только в том, чтобы после добавления товара открывался checkout, проверьте настройки WooCommerce и плагины ускорения оформления заказа. Но у такого подхода есть компромисс: часть решений меняет только один сценарий, а прямой заход на /cart/ остаётся доступным.
| Подход | Плюсы | Минусы |
|---|---|---|
| Настройка WooCommerce | Быстро, без кода | Не всегда закрывает прямой доступ к корзине |
| Код в теме/плагине | Контролируемое поведение, можно добавить исключения | Нужно тестировать совместимость |
| Отдельный плагин | Удобно для нетехнической команды | Лишняя зависимость, возможны конфликты |
Если вы уже используете набор оптимизационных настроек, например Clearfy Pro, проверьте, нет ли там опций, которые меняют поведение WooCommerce или скрывают стандартные страницы магазина. Но сам редирект лучше держать в одном месте, чтобы не искать причину конфликта по трём плагинам сразу.
Проверка результата после внедрения
После сохранения кода не ограничивайтесь визуальной проверкой. В WooCommerce важно убедиться, что сценарий работает и на фронтенде, и в браузере без кэша.
- Откройте карточку товара в режиме инкогнито.
- Нажмите
Добавить в корзину. - Проверьте, что URL сменился на страницу оформления заказа.
- Попробуйте вручную открыть
/cart/и убедитесь, что срабатывает редирект. - Добавьте товар из каталога, а не только из карточки товара, если у вас есть кнопки быстрого добавления.
Дополнительно проверьте:
- не ломается ли AJAX-добавление в корзину;
- не остаются ли в шапке ссылки на корзину;
- не появляется ли цикл редиректов на checkout;
- не сбрасываются ли купоны и выбранные вариации.
Частые ошибки и как их исправить
Редирект зацикливается
Обычно это происходит, если тема или плагин уже перенаправляет checkout обратно на корзину или на страницу входа. Проверьте все фильтры, которые влияют на wc_get_checkout_url(), а также правила редиректов в кэширующих и security-плагинах.
Корзина открывается у админа, но не у гостя
Так бывает, если в коде добавлено условие по ролям или если редирект завязан на авторизацию. Для магазина это не всегда ошибка, но поведение нужно осознанно задокументировать: поддержка должна понимать, кто и зачем видит корзину.
AJAX-кнопка добавления товара перестала работать
Некоторые темы после AJAX-запроса ожидают, что пользователь останется на текущей странице. Если после добавления товара вы принудительно уводите его на checkout, убедитесь, что скрипт темы не пытается повторно открыть корзину или показать всплывающее окно с кнопкой перехода.
Ссылки на корзину остались в меню и шапке
Это самая банальная проблема. Сам редирект работает, но пользователь всё равно видит кнопку Корзина и кликает по ней. Уберите ссылки из меню, мини-корзины и блоков в шапке, если корзина больше не нужна как отдельная страница.
Чек-лист перед публикацией
- проверен сценарий добавления товара в корзину;
- проверен прямой заход на
/cart/; - убраны ссылки на корзину из меню и шапки;
- тест пройден в инкогнито и без кэша;
- проверено оформление заказа с купоном, если он используется;
- нет конфликта с плагином ускоренного checkout;
- код добавлен в дочернюю тему или отдельный мини-плагин, а не в родительскую тему.
Безопасность и поддержка
Если вы вносите код вручную, не правьте родительскую тему: после обновления изменения потеряются. Лучше использовать дочернюю тему или отдельный плагин для кастомных функций. Это особенно важно для WooCommerce-магазина, где любое мелкое изменение может затронуть продажи.
Ещё один практический момент: после редиректа на checkout нагрузка на страницу оформления может вырасти, особенно если на ней много скриптов доставки, оплаты и аналитики. Поэтому имеет смысл проверить скорость именно checkout-страницы, а не только главной и карточки товара.
Если задача шире и вы параллельно чистите магазин от лишних дублей, скриптов и технического мусора, такие изменения лучше делать поэтапно: сначала редирект, потом оптимизация checkout, потом уже отключение лишних элементов интерфейса. Так проще понять, что именно сломалось, если что-то пойдёт не так.