Как в WooCommerce отключить корзину и сразу вести к оформлению заказа

В WooCommerce корзина не всегда нужна. Если у вас один товар в заказе, услуги с фиксированной ценой или быстрый повторный заказ, лишний шаг только мешает: пользователь добавляет товар, потом ещё раз идёт в корзину и только после этого попадает к оформлению. На небольших магазинах это часто видно в аналитике как лишний отвал на промежуточной странице.

Ниже — рабочие способы убрать корзину как отдельный этап и направить покупателя сразу на checkout. Разберём, где это ломается, как сделать через код и через настройки, и как проверить, что всё действительно работает.

Когда это решение уместно

Сценарий подходит не для каждого магазина. Если у вас много товаров, сравнение позиций и отложенные покупки, корзина нужна. Но если задача — сократить путь до оплаты, можно обойтись без неё.

  • один товар в заказе или типовой набор услуг;
  • продажа цифровых товаров без сложного выбора;
  • лендинг с кнопкой «Купить сейчас»;
  • повторные заказы по одной и той же схеме;
  • акции, где важно не терять пользователя на лишнем шаге.

Диагностика: что именно мешает убрать корзину

Перед правками проверьте, где сейчас формируется лишний переход. Обычно проблема не в одном месте, а в связке из нескольких настроек и ссылок.

Что проверить в первую очередь

  • кнопка «Добавить в корзину» ведёт на страницу товара, а не на checkout;
  • в меню и шаблонах нет явных ссылок на /cart/;
  • в теме не переопределён шаблон мини-корзины с отдельным CTA;
  • плагины кэширования не держат старые ссылки после изменений;
  • в WooCommerce не включены сторонние расширения, которые принудительно отправляют на корзину.

Если после добавления товара пользователь всё равно попадает на корзину, сначала найдите источник редиректа. Это может быть как код темы, так и плагин быстрых покупок или кастомный фильтр.

Варианты решения: плагин, код или гибрид

Технически задачу можно решить тремя путями. Самый надёжный — через код, если нужен предсказуемый результат. Плагин удобнее, если не хочется трогать тему. Гибридный вариант полезен, когда нужно оставить корзину для части сценариев.

ПодходПлюсыМинусы
ПлагинБыстро включить, без правки файловЗависимость от стороннего кода, возможны конфликты
Код в теме или mu-pluginКонтроль над логикой, легко проверитьНужно аккуратно тестировать после обновлений
ГибридМожно оставить корзину для отдельных товаровСложнее поддерживать

Пошаговое решение через код

Если вам нужно, чтобы после добавления товара пользователь сразу попадал на страницу оформления заказа, используйте фильтр woocommerce_add_to_cart_redirect. Это стандартный хук WooCommerce, он работает без выдуманных обходов.

<?php
add_filter( 'woocommerce_add_to_cart_redirect', 'wptem_redirect_to_checkout' );
function wptem_redirect_to_checkout( $url ) {
    if ( is_admin() ) {
        return $url;
    }

    return wc_get_checkout_url();
}

Этот вариант перенаправляет пользователя на checkout после добавления товара в корзину. Но сама корзина при этом остаётся доступной по прямой ссылке. Если нужно убрать её из навигации и не показывать как отдельный шаг, добавьте ещё несколько правок.

Скрыть ссылку на корзину и заменить её на checkout

<?php
add_filter( 'woocommerce_get_cart_url', function() {
    return wc_get_checkout_url();
} );

Такой фильтр полезен, если тема или плагин используют wc_get_cart_url() для кнопок и ссылок. Тогда пользователь не увидит корзину как отдельную страницу в типовых сценариях.

Отключить переход в корзину после AJAX-добавления

Если у вас кнопка «Добавить в корзину» работает через AJAX, проверьте, не включён ли редирект в настройках темы или плагина. В стандартном WooCommerce AJAX-добавление не обязано вести на корзину, но сторонние расширения часто меняют поведение.

Если нужно принудительно вести на checkout и для AJAX-сценариев, обычно достаточно фильтра выше. Для отдельных тем может понадобиться ещё отключить их собственный JS-редирект.

Если корзину нужно убрать полностью

Иногда задача шире: не просто редирект, а фактическое исключение корзины из пользовательского пути. Тогда можно скрыть страницу корзины и оставить только checkout. Полностью удалять системную страницу не стоит, но можно убрать её из меню, ссылок и типового интерфейса.

<?php
add_action( 'template_redirect', function() {
    if ( is_cart() ) {
        wp_safe_redirect( wc_get_checkout_url() );
        exit;
    }
} );

Этот вариант отправляет посетителя с /cart/ на checkout. Он подходит, если корзина не должна быть доступна вообще. Но перед включением проверьте, не используют ли её другие части сайта: виджеты, мини-корзину, ссылки в письмах или кастомные кнопки.

Проверка результата после внедрения

После правок важно проверить не только кнопку, но и весь путь пользователя. Иначе можно получить рабочий редирект, но сломать оплату или мини-корзину.

  • добавьте товар в каталогe и убедитесь, что открывается checkout;
  • попробуйте открыть /cart/ напрямую — должен быть редирект или понятное поведение;
  • проверьте мобильную версию, особенно если кнопка «Купить» кастомная;
  • очистите кэш страницы и кэш объекта, если он есть;
  • протестируйте товар с вариациями, купоном и без купона;
  • проверьте, не ломается ли мини-корзина в шапке.

Если используете платежные модули, сделайте тестовый заказ до конца: от добавления товара до статуса оплаты. Иногда редирект на checkout работает, но платёжный шлюз ожидает промежуточный шаг и конфликтует с кастомной логикой темы.

Частые ошибки и как их исправить

Редирект зацикливается

Это происходит, если фильтр или template_redirect срабатывает на всех страницах без проверки контекста. В коде выше есть защита is_admin(), но при сложной логике лучше дополнительно ограничить условие только страницей товара или только действием добавления в корзину.

Корзина всё ещё открывается из меню

Частая причина — в теме жёстко прописана ссылка на страницу корзины, а не используется wc_get_cart_url(). В таком случае фильтр не поможет. Нужно заменить ссылку в шаблоне или в настройках меню.

После обновления тема снова показывает корзину

Если правки внесены в файлы темы, обновление их затрёт. Для такой логики лучше использовать дочернюю тему или небольшой mu-plugin. Это надёжнее, чем править functions.php основной темы.

Падает совместимость с плагином доставки или оплаты

Некоторые модули рассчитывают, что пользователь сначала увидит корзину и только потом перейдёт к checkout. Если после редиректа появляются ошибки в расчёте доставки или не подгружаются способы оплаты, проверьте, не завязана ли логика плагина на сессию корзины и обновление totals.

Практический вариант для аккуратного внедрения

Если не хотите править тему, создайте небольшой mu-plugin. Такой файл не зависит от активации темы и удобен для точечных бизнес-правок.

<?php
/**
 * Plugin Name: WPTEM Direct Checkout Redirect
 */

add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
    return wc_get_checkout_url();
} );

add_action( 'template_redirect', function() {
    if ( is_cart() ) {
        wp_safe_redirect( wc_get_checkout_url() );
        exit;
    }
} );

Такой файл можно положить в wp-content/mu-plugins/. Если папки нет, её нужно создать. Это удобный способ держать бизнес-логику отдельно от темы.

Безопасность и производительность

Сам по себе редирект на checkout не тяжёлый, но есть несколько практических моментов.

  • не используйте wp_redirect() без нужды, если есть wp_safe_redirect();
  • не ставьте редирект на всех страницах без условий;
  • проверяйте совместимость с кэширующими плагинами и CDN;
  • если у вас много кастомных правил, держите их в одном mu-plugin, а не в нескольких файлах темы;
  • после изменений очищайте кэш браузера и серверный кэш.

Если нужен не только редирект, но и более чистый интерфейс магазина, иногда проще сочетать код с настройкой темы и отключением лишних элементов. В проектах на WooCommerce для этого часто используют наборы оптимизаций вроде Clearfy Pro, но сам редирект лучше оставлять в коде: так проще контролировать поведение и отлаживать конфликтные места.

Что должно получиться в итоге

После внедрения пользователь нажимает «Добавить в корзину» и сразу попадает на оформление заказа, а страница корзины либо скрыта, либо не используется в обычном сценарии. Если при этом checkout открывается стабильно, купоны работают, а платёжные методы не ломаются — решение можно считать удачным.

Если же у вас магазин с несколькими товарами в одном заказе, не спешите отключать корзину полностью. В таких проектах лучше оставить её как опцию и убрать только лишние ссылки, а не ломать привычный сценарий покупки.

Как вывести остаток товара в WooCommerce на странице товара и в каталоге
12.08.2026
Изменение URL для AJAX-запросов в WordPress без перезагрузки страницы
11.12.2025
Как удалить автоматически создаваемые ревизии в WordPress
05.03.2026
Как удалить и избавиться от пустых записей в базе данных WordPress
04.01.2026
WooCommerce: автоматическое возврат средств после отмены заказа
07.05.2026