Сценарий знакомый: товар уже выбран, но покупатель уходит на странице корзины. Для части магазинов лишний шаг действительно мешает — особенно если продаётся один товар, цифровой продукт, услуга или набор с фиксированной ценой. В WooCommerce это можно решить без тяжёлых плагинов: либо перенаправлять пользователя сразу на оформление заказа, либо скрывать корзину как отдельный шаг, либо оставить её только как технический промежуточный экран.
Ниже — рабочие варианты, как это сделать, что проверить после внедрения и где чаще всего ломается логика купонов, доставки и мини-корзины.
Когда корзину лучше убрать, а когда не стоит
Отключать корзину имеет смысл не во всех магазинах. Если у вас один товар, подписка, цифровая загрузка, запись на услугу или простой каталог без сложной комплектации — прямой переход к checkout обычно оправдан. Если же покупатель часто собирает несколько позиций, сравнивает варианты доставки или использует купоны на разные наборы товаров, корзина остаётся полезной.
| Подход | Что даёт | Ограничения |
|---|---|---|
| Редирект в checkout | Убирает лишний шаг | Нужно проверить купоны, доставку и AJAX-кнопки |
| Скрыть корзину, но оставить URL | Меньше визуального шума | Пользователь всё ещё может попасть на страницу вручную |
| Оставить корзину как есть | Максимум гибкости | Лишний шаг в воронке |
Диагностика: что именно сейчас мешает перейти к оформлению
Перед правкой кода стоит понять, где именно пользователь застревает. В WooCommerce проблема часто не в самой корзине, а в одном из связанных элементов: кнопке Добавить в корзину, мини-корзине в шапке, AJAX-обновлении, плагине доставки или кастомной теме.
Проверьте эти точки
- после добавления товара открывается ли страница корзины автоматически;
- есть ли на сайте мини-корзина, которая ведёт на отдельную страницу;
- используются ли купоны, зависящие от содержимого корзины;
- работает ли доставка только после ввода адреса;
- не переопределяет ли тема шаблоны WooCommerce;
- не стоит ли плагин, который добавляет собственную логику редиректов.
Если у вас уже есть кэширование страниц, проверьте и его: редирект на checkout не должен ломаться из-за кешированной корзины или старых ссылок в меню.
Пошаговое решение: перенаправлять покупателя сразу на checkout
Самый простой и предсказуемый вариант — отправлять пользователя на страницу оформления заказа сразу после добавления товара в корзину. Для этого в WooCommerce есть фильтр woocommerce_add_to_cart_redirect.
<?php
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
} );Этот вариант подходит, если вам не нужна отдельная корзина как шаг. Но на практике часто лучше оставить корзину доступной по прямой ссылке, а редирект делать только для обычного сценария добавления товара.
Если хотите убрать саму страницу корзины из навигации и при этом не ломать внутренние ссылки, используйте более мягкий вариант: перенаправляйте только с URL корзины на checkout.
<?php
add_action( 'template_redirect', function() {
if ( function_exists( 'is_cart' ) && is_cart() && ! is_admin() ) {
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
} );Такой способ полезен, если корзина нужна технически, но вы не хотите показывать её пользователю. Однако перед включением обязательно проверьте, не используется ли корзина в каких-то сценариях плагинов: например, в отложенной оплате, сохранении набора товаров или в кастомных промо-страницах.
Если нужно убрать только кнопку перехода в корзину
Иногда задача не в редиректе, а в том, чтобы убрать лишнюю кнопку или ссылку на корзину в шаблоне темы. Тогда править лучше не WooCommerce, а конкретный шаблон темы или хук, через который выводится ссылка.
Например, если в шапке есть ссылка на корзину, её можно заменить на checkout. В теме это обычно делается через фильтр или переопределение шаблона, но конкретный способ зависит от реализации. Если ссылка выводится через стандартный WooCommerce-функционал, можно использовать URL оформления заказа в своих шаблонах:
<a href="<?php echo esc_url( wc_get_checkout_url() ); ?>">Перейти к оплате</a>Это не отключает корзину полностью, но убирает лишний маршрут для пользователя.
Проверка результата после внедрения
После правки не ограничивайтесь ручным кликом по кнопке Добавить в корзину. Нужно проверить весь путь покупки, иначе проблемы всплывут уже на реальном заказе.
Мини-чек-лист проверки
- товар добавляется в корзину без ошибки;
- после добавления происходит редирект на checkout;
- страница checkout открывается с заполненным товаром;
- купоны применяются корректно;
- доставка и налоги пересчитываются;
- кнопка «Назад» в браузере не возвращает в сломанную корзину;
- страница корзины не доступна там, где вы её скрыли;
- мобильная версия ведёт себя так же, как десктоп.
Если у вас включён кэш страниц, проверьте ещё и анонимную сессию в режиме инкогнито. WooCommerce сильно зависит от сессий, и кэш может скрыть проблему на обычном браузере.
Частые ошибки и как их исправить
Редирект ломает AJAX-кнопки
Если тема или плагин добавляют товар через AJAX, а редирект срабатывает не там, где нужно, пользователь может увидеть пустую страницу или неожиданный переход. В таком случае проверьте, не дублируется ли логика редиректа в теме и в плагинах.
Купон перестаёт применяться
Некоторые магазины используют купоны, которые рассчитываются только после перехода на корзину. Если вы убрали корзину полностью, убедитесь, что купон можно ввести на checkout и что тема не скрывает поле купона. В WooCommerce это зависит от настроек и шаблона оформления заказа.
Доставка не пересчитывается
Если доставка зависит от адреса, а покупатель попадает сразу на checkout, это нормально. Но если у вас кастомная логика, которая ожидала корзину как промежуточный этап, проверьте, что все поля адреса и методы доставки доступны на странице оформления заказа.
Страница корзины всё ещё открывается
Это обычно значит, что редирект добавлен только для кнопки Добавить в корзину, но не для прямого URL. Тогда нужен второй слой — перенаправление через template_redirect.
Безопасность и производительность
Если решение делаете кодом, добавляйте его в дочернюю тему или в небольшой mu-plugin, а не в файл основной темы. Так вы не потеряете правку после обновления.
Для магазинов с высокой нагрузкой лучше избегать лишних плагинов, которые просто перенаправляют корзину на checkout. Один короткий фрагмент кода обычно надёжнее и проще в сопровождении, чем отдельный плагин с неизвестной логикой.
Если на сайте много служебного мусора в интерфейсе WooCommerce, имеет смысл отдельно проверить настройки оптимизации и очистки дублей. В ряде случаев полезен Clearfy Pro: он помогает убрать лишние элементы и сократить количество конфликтов в фронтенде, но сам по себе не заменяет точечную настройку поведения корзины.
Если вы хотите оставить корзину технически доступной, но не показывать её в меню, не удаляйте страницу из системы без проверки зависимостей. Некоторые плагины и шаблоны ожидают, что URL корзины существует, даже если пользователь туда почти не попадает.
Что делать, если нужен гибридный сценарий
Иногда лучше не отключать корзину полностью, а сделать редирект только для части товаров. Например, для одного цифрового продукта — сразу на checkout, а для остального ассортимента — обычная корзина. Это можно реализовать через проверку товара в фильтре редиректа, но здесь уже нужен аккуратный код под вашу структуру каталога.
<?php
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
if ( isset( $_REQUEST['add-to-cart'] ) ) {
$product_id = absint( $_REQUEST['add-to-cart'] );
$product = wc_get_product( $product_id );
if ( $product && $product->is_virtual() ) {
return wc_get_checkout_url();
}
}
return $url;
} );Это пример именно для виртуальных товаров. Если у вас другая логика — например, отдельная категория или конкретный набор SKU — проверку нужно адаптировать под ваш каталог.
Как понять, что решение действительно работает
Критерий простой: путь от кнопки покупки до checkout должен быть коротким, предсказуемым и без побочных эффектов. Если покупатель добавляет товар, видит страницу оформления заказа, может применить купон и завершить оплату без возврата в корзину — задача решена.
После внедрения полезно ещё раз пройти сценарий в трёх режимах: обычный браузер, инкогнито и мобильное устройство. Так быстрее всплывают конфликты темы, кэша и плагинов, которые на локальной проверке обычно не видны.