Если в магазине одна-две позиции в заказе, а корзина только добавляет лишний клик, логично вести покупателя сразу на оформление заказа. В WooCommerce это можно сделать без тяжелых плагинов, но есть нюанс: простая переадресация не всегда достаточно. Нужно понять, где именно пользователь попадает в корзину, что происходит с купонами, мини-корзиной и AJAX-добавлением товара.
Когда отключение корзины действительно уместно
Этот сценарий хорошо работает для магазинов с простым ассортиментом: цифровые товары, услуги, подписки, товары с фиксированной комплектацией. Если у вас часто покупают несколько разных позиций, корзина все еще нужна — она помогает проверить состав заказа до оплаты.
На практике чаще всего хотят не «удалить корзину», а убрать лишний промежуточный экран. Это разные задачи. В WooCommerce можно:
- скрыть ссылку на корзину из меню и шапки;
- перенаправлять пользователя с
/cart/на/checkout/; - сразу отправлять на checkout после добавления товара;
- сохранить работу купонов и мини-корзины.
Диагностика: что именно мешает сейчас
Перед правкой кода проверьте, откуда вообще появляется корзина. Иначе можно убрать страницу, но оставить ссылки в шаблоне, виджете или плагине.
Проверьте эти точки
- ссылка на корзину в главном меню;
- иконка корзины в хедере темы;
- кнопка
View cartпосле добавления товара; - прямой переход на
/cart/из письма, виджета или стороннего плагина; - AJAX-добавление товара, которое все равно ведет на корзину.
Если корзина открывается после клика по кнопке «Добавить в корзину», это обычно не проблема WooCommerce как такового, а настройка темы или плагина. Если же пользователь попадает на /cart/ при любом сценарии, можно решать на уровне редиректа и шаблонов.
Пошаговое решение без лишних плагинов
Ниже — рабочий вариант для дочерней темы или небольшого mu-plugin. Он делает три вещи: перенаправляет корзину на checkout, убирает ссылку на корзину после добавления товара и отправляет пользователя сразу на оформление заказа после клика «Добавить в корзину».
1. Перенаправление страницы корзины на checkout
<?php
add_action( 'template_redirect', function () {
if ( function_exists( 'is_cart' ) && is_cart() ) {
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
} );Этот код срабатывает только на фронтенде. Он не удаляет корзину из системы, а просто не дает пользователю оставаться на ее странице.
2. Убрать ссылку «Просмотр корзины» после добавления товара
<?php
add_filter( 'wc_add_to_cart_message_html', function( $message, $products ) {
$message = preg_replace( '#<a[^>]*class="[^"]*wc-forward[^"]*"[^>]*>.*?</a>#i', '', $message );
return $message;
}, 10, 2 );Это не идеальная универсальная замена для всех тем, но в большинстве стандартных шаблонов убирает лишнюю кнопку из сообщения WooCommerce. Если тема выводит собственный notice, править придется уже шаблон.
3. Сразу вести на checkout после добавления товара
<?php
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
} );Такой вариант удобен для магазинов с одним товаром в заказе. Если у вас есть вариативные товары или допродажи, проверьте, не ломает ли это сценарий выбора вариации.
Если нужна аккуратная настройка через код, а не жесткий редирект
Иногда лучше не отправлять пользователя на checkout сразу, а только убрать корзину как отдельную страницу. Тогда покупатель может добавлять несколько товаров подряд, но не увидит промежуточный экран.
В этом случае оставьте только редирект с /cart/ и уберите ссылки на корзину из темы. Это более мягкий вариант для магазинов с несколькими позициями в заказе.
Скрыть корзину из меню и хедера
Здесь уже нет универсального хука WooCommerce: зависит от темы. Обычно нужно удалить пункт меню в Внешний вид → Меню или отключить иконку корзины в настройках темы. Если тема не дает такой опции, правьте шаблон хедера в дочерней теме.
Если нужен быстрый технический обход, можно скрыть ссылку CSS-ом, но это только визуальная мера, а не решение:
.site-header .cart-link,
.site-header .header-cart {
display: none;
}CSS подходит только если ссылка не нужна вообще. Если она остается в DOM, пользователи все равно смогут открыть корзину через прямой URL.
Сравнение подходов
| Подход | Что делает | Плюсы | Минусы |
|---|---|---|---|
| Плагин | Скрывает корзину и настраивает редиректы | Быстро, без кода | Лишняя зависимость, возможны конфликты |
| Код в дочерней теме | Точный контроль над редиректами | Прозрачно и предсказуемо | Нужно тестировать после обновлений темы |
| Только CSS | Прячет элементы интерфейса | Очень быстро | Не решает доступ по прямой ссылке |
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой главной страницы. Пройдитесь по всем сценариям, где корзина могла остаться.
Чек-лист проверки
- открывается ли
/cart/и уходит ли редирект на checkout; - работает ли добавление товара в корзину;
- сохраняется ли выбранная вариация товара;
- применяются ли купоны на странице оформления заказа;
- не ломается ли мини-корзина в хедере;
- не появляется ли бесконечный редирект при включенном кэше.
Проверяйте в режиме инкогнито и после очистки кэша браузера. Если используется серверный кэш или плагин кэширования, старый шаблон может продолжать отдавать страницу корзины даже после правки кода.
Частые ошибки и как их исправить
Редирект зацикливается
Обычно это происходит, если код срабатывает не только на фронтенде или checkout сам перенаправляет обратно из-за ошибки в теме. Проверьте, что условие is_cart() не вызывается в админке и что нет второго редиректа из плагина.
Покупатель не может применить купон
Если вы сразу ведете на checkout, купон нужно вводить уже там. Это нормально, но интерфейс должен быть понятным. Если купоны критичны для продаж, не убирайте корзину полностью — оставьте ее как промежуточный шаг.
Кнопка «Добавить в корзину» ведет не туда
Иногда тема или плагин переопределяют поведение WooCommerce через JavaScript. Тогда PHP-фильтр не поможет в одиночку. Ищите обработчик в файлах темы или в плагине, который меняет стандартный AJAX-сценарий.
Мини-корзина продолжает открываться
Это отдельный интерфейсный элемент. Его нужно отключать в настройках темы или править шаблон хедера. Редирект с /cart/ не влияет на мини-корзину.
Безопасность и производительность
Не ставьте случайный плагин только ради одного редиректа. Для такой задачи код в дочерней теме или небольшом mu-plugin обычно надежнее: меньше зависимостей, меньше шансов получить конфликт после обновления.
Если магазин на кэше, после внедрения изменений очистите:
- кэш страницы;
- объектный кэш, если он используется;
- кэш браузера;
- CDN, если он стоит перед сайтом.
Для магазинов с большим количеством настроек и дублей в интерфейсе полезно отдельно проверить, не дублируются ли элементы корзины в теме. Если нужно чистить лишние блоки, мета и служебные элементы без ручной правки каждого шаблона, иногда удобнее подключить Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но это уже не замена логике WooCommerce, а инструмент для общей чистки сайта.
Если после редиректа вы видите, что часть трафика все равно попадает на старую корзину, проверьте внешние ссылки: письма, кнопки в баннерах, сохраненные закладки и ссылки из рекламы. Технически страница может быть отключена, но пользовательский путь — нет.
Когда лучше не отключать корзину
Не убирайте корзину, если:
- у товара часто меняется состав заказа;
- нужен пересчет доставки до оформления;
- покупатели сравнивают несколько позиций перед оплатой;
- в магазине есть B2B-сценарии с массовой закупкой.
В таких случаях лучше оптимизировать саму корзину: сократить поля checkout, убрать лишние блоки и ускорить загрузку, а не ломать привычный сценарий покупки. Тогда пользовательский путь останется понятным, а магазин не потеряет гибкость.