Сценарий простой: у вас один товар, цифровой продукт, услуга или магазин с быстрым заказом, и промежуточная корзина только мешает. Пользователь нажимает «Купить», попадает в корзину, потом ещё раз идёт к оформлению — лишний шаг часто ломает конверсию и усложняет путь покупки.
В WooCommerce это решается без тяжёлых плагинов, но важно не просто «спрятать корзину», а аккуратно перенаправить покупателя в checkout, не сломав мини-корзину, AJAX-добавление и ссылки из писем.
Когда корзину действительно стоит отключать
Подход подходит не для любого магазина. Если у вас много товаров, сложные комплектации, сравнение позиций или B2B-заказ с несколькими этапами согласования, корзина нужна. А вот в таких случаях её часто убирают:
- один основной товар или ограниченный набор услуг;
- цифровые товары без доставки;
- лендинги с одним целевым оффером;
- быстрые покупки через кнопку «Купить сейчас»;
- магазины, где оформление должно начинаться сразу после добавления товара.
Диагностика: что именно мешает сейчас
Перед изменениями проверьте, где именно пользователь теряет лишний клик. Обычно проблема выглядит так:
- кнопка
Добавить в корзинуведёт на страницу корзины; - после AJAX-добавления мини-корзина обновляется, но пользователь всё равно остаётся на каталоге;
- ссылка на корзину есть в шапке, хотя она не нужна в текущей модели продаж;
- после редиректа в checkout не подставляется товар, если товар добавлялся через нестандартную кнопку.
Проверка вручную занимает пару минут: откройте товар в режиме инкогнито, добавьте его в корзину и посмотрите, куда ведёт WooCommerce по умолчанию. Если после клика вы видите страницу корзины, значит редирект ещё не настроен.
Варианты решения: плагин, код или гибрид
| Подход | Когда удобен | Минус |
|---|---|---|
| Плагин | Нужно быстро убрать корзину без разработки | Может добавить лишние настройки и зависимость от обновлений |
| Код в теме или мини-плагине | Нужен точечный контроль над поведением | Нужно аккуратно тестировать после обновлений темы |
| Гибрид | Часть логики — код, часть — настройки WooCommerce | Нужно следить, чтобы решения не конфликтовали |
Если у вас уже стоит плагин для оптимизации и чистки WooCommerce, например Clearfy Pro, проверьте, не дублирует ли он часть функций. Но саму логику редиректа лучше держать в коде: так проще понять, что именно происходит.
Пошаговое решение через код
Ниже — рабочий вариант, который делает две вещи: перенаправляет пользователя с корзины на оформление заказа и убирает возможность попасть на страницу корзины напрямую.
1. Редирект с корзины на checkout
<?php
add_action( 'template_redirect', function () {
if ( function_exists( 'is_cart' ) && is_cart() ) {
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
} );Этот код лучше добавлять не в functions.php активной темы, а в небольшой кастомный плагин или mu-plugin. Тогда он не исчезнет при смене темы.
2. Автоматический переход к оформлению после добавления товара
Если нужно, чтобы после нажатия Добавить в корзину пользователь сразу попадал в checkout, используйте фильтр ниже. Он работает для стандартного сценария WooCommerce.
<?php
add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
return wc_get_checkout_url();
} );Это решение удобно для магазинов с одним товаром или очень коротким каталогом. Если у вас есть товары, которые покупают по несколько штук, такой редирект может раздражать: пользователь не успеет добавить следующую позицию.
3. Убираем ссылку на корзину из меню и шапки
Если в теме есть отдельная ссылка на корзину, её нужно убрать вручную в настройках меню или через шаблон темы. Иначе пользователь всё равно сможет попасть на страницу, которую вы только что скрыли. В некоторых темах достаточно отключить блок корзины в настройках хедера.
Если ссылка генерируется кодом, проверьте шаблон на наличие вызовов wc_get_cart_url(). Сам WooCommerce не заставляет выводить корзину в шапке — это обычно делает тема или плагин.
Если нужен «Купить сейчас», а не полное отключение корзины
Иногда правильнее не убирать корзину полностью, а добавить отдельную кнопку «Купить сейчас». Тогда обычная кнопка остаётся для тех, кто хочет собрать несколько товаров, а быстрый сценарий ведёт сразу в checkout.
Пример для страницы товара:
<?php
add_action( 'woocommerce_after_add_to_cart_button', function () {
global $product;
if ( ! $product instanceof WC_Product ) {
return;
}
$url = add_query_arg(
array(
'add-to-cart' => $product->get_id(),
),
wc_get_checkout_url()
);
echo '<a class="button alt buy-now-button" href="' . esc_url( $url ) . '" style="margin-left:10px;">Купить сейчас</a>';
} );Такой вариант не всегда идеален для товаров с вариациями. Для вариативных товаров нужно дополнительно передавать выбранные атрибуты, иначе WooCommerce не сможет корректно добавить товар в корзину.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Пройдитесь по короткому чек-листу:
- откройте страницу товара в инкогнито;
- добавьте товар в корзину и убедитесь, что редирект ведёт на checkout;
- проверьте, что страница
/cart/не открывается напрямую; - убедитесь, что оформление заказа видит добавленный товар;
- проверьте мобильную версию, если кнопка «Купить сейчас» добавлялась в шаблон;
- посмотрите, не осталось ли в шапке или футере ссылки на корзину.
Если у вас включён кэш страницы, очистите его после изменений. Иначе можно получить ложное впечатление, что код не сработал, хотя на деле браузер или кэш-плагин показывает старую версию шаблона.
Частые ошибки и как их исправить
Редирект зацикливается
Такое бывает, если код редиректа написан без проверки is_cart() или если checkout сам подменяется сторонним плагином. Исправление простое: редирект должен срабатывать только на странице корзины, а не на всех страницах WooCommerce.
Товар не добавляется в checkout
Причина обычно в том, что используется нестандартная кнопка без корректных параметров товара, особенно для вариаций. Для variable product нельзя ограничиться только add-to-cart: нужны выбранные атрибуты и variation ID.
Мини-корзина продолжает показывать корзину
Это не ошибка WooCommerce, а поведение темы или виджета. Проверьте настройки хедера, блоков WooCommerce и шаблонов, где выводится иконка корзины. Иногда достаточно заменить ссылку на checkout или убрать элемент полностью.
После обновления темы всё сломалось
Если код был в functions.php, он мог конфликтовать с новой версией шаблона. Для таких задач безопаснее использовать отдельный мини-плагин или mu-plugin: логика останется независимой от темы.
Практические советы по безопасности и производительности
Редирект сам по себе лёгкий, но есть несколько моментов, которые лучше учесть:
- используйте
wp_safe_redirect(), а не голыйwp_redirect(); - не вставляйте код в шаблон страницы, если он должен работать глобально;
- проверяйте совместимость с кэширующими плагинами и CDN;
- если магазин работает с оплатой и доставкой, не убирайте корзину без теста полного сценария заказа;
- для сложной логики лучше сделать отдельный мини-плагин, а не править тему вручную.
Если вам нужен не только редирект, но и более чистая структура магазина, имеет смысл параллельно убрать лишние элементы WooCommerce: дублирующиеся блоки, лишние скрипты и неиспользуемые шаблоны. Это уже вопрос не только удобства, но и поддержки проекта в долгую.
Когда лучше не отключать корзину
Не стоит форсировать редирект, если:
- покупатель часто добавляет несколько товаров;
- в магазине есть купоны, сравнение и апселлы в корзине;
- нужно собирать заказ из нескольких позиций;
- оформление зависит от сложной доставки или выбора склада.
В таких случаях лучше оставить корзину, но сократить путь к checkout: убрать лишние ссылки, оптимизировать кнопку добавления и проверить, не перегружает ли тема страницу лишними скриптами. Тогда вы не ломаете привычный сценарий покупки, а просто делаете его короче.