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

Сценарий простой: у вас один товар, цифровой продукт, услуга или магазин с быстрым заказом, и промежуточная корзина только мешает. Пользователь нажимает «Купить», попадает в корзину, потом ещё раз идёт к оформлению — лишний шаг часто ломает конверсию и усложняет путь покупки.

В 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: убрать лишние ссылки, оптимизировать кнопку добавления и проверить, не перегружает ли тема страницу лишними скриптами. Тогда вы не ломаете привычный сценарий покупки, а просто делаете его короче.

Как удалить PHP ошибки в WordPress: практические советы и примеры
05.11.2025
Как запретить XML-RPC в WordPress через .htaccess и PHP без поломки админки
22.08.2026
Как скрыть цены WooCommerce для незарегистрированных пользователей
15.05.2026
Как удалить проблемы с перенаправлениями после смены домена в WordPress
02.05.2026
Как автоматически удалять неактивных пользователей WordPress с помощью кода
09.06.2026