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

|

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

Когда проблема проявляется и что именно ломается

Сценарий обычно выглядит так: товар добавляется в корзину, но WooCommerce ведёт пользователя на страницу корзины или остаётся на текущей странице с AJAX-уведомлением. Для части магазинов это нормально, но если вы продаёте один товар, набор услуг или хотите сократить путь до оплаты, корзина становится лишней остановкой.

Перед изменениями проверьте, не мешает ли редиректу тема или плагин. Иногда поведение задаётся не WooCommerce, а кастомной кнопкой, мини-корзиной, AJAX-добавлением или настройками темы.

Быстрая диагностика

Какой вариант решения выбрать

Есть три рабочих подхода: настройка через фильтр, редирект после добавления товара через PHP и изменение поведения кнопки в теме. Для большинства магазинов достаточно фильтра WooCommerce. Если нужен более жёсткий сценарий, лучше использовать код в дочерней теме или в небольшом mu-plugin.

ПодходКогда подходитПлюсыМинусы
Фильтр WooCommerceНужно убрать стандартный переход в корзинуПросто, прозрачно, без лишней логикиНе всегда учитывает кастомные кнопки темы
Редирект после add-to-cartНужно сразу вести на checkoutРаботает предсказуемоТребует аккуратной проверки AJAX-сценариев
Плагин быстрых покупокНужны дополнительные сценарии и A/B-тестыМеньше кода, больше настроекДополнительная нагрузка и зависимость от плагина

Пошаговое решение без плагина

Если цель — после добавления товара сразу отправлять покупателя на оформление заказа, используйте фильтр woocommerce_add_to_cart_redirect. Его удобно подключать в functions.php дочерней темы или в отдельном мини-плагине.

<?php
add_filter( 'woocommerce_add_to_cart_redirect', 'yelly_redirect_to_checkout_after_add_to_cart' );

function yelly_redirect_to_checkout_after_add_to_cart( $url ) {
    if ( is_admin() ) {
        return $url;
    }

    return wc_get_checkout_url();
}

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

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

Вариант с более точной логикой

Иногда редирект нужен только для простых товаров, а для виртуальных услуг или отдельных категорий — нет. Тогда лучше проверять товар перед отправкой пользователя дальше.

<?php
add_filter( 'woocommerce_add_to_cart_redirect', 'yelly_redirect_only_for_simple_products' );

function yelly_redirect_only_for_simple_products( $url ) {
    if ( empty( $_REQUEST['add-to-cart'] ) ) {
        return $url;
    }

    $product_id = absint( $_REQUEST['add-to-cart'] );
    $product    = wc_get_product( $product_id );

    if ( ! $product ) {
        return $url;
    }

    if ( $product->is_type( 'simple' ) ) {
        return wc_get_checkout_url();
    }

    return $url;
}

Здесь важно не усложнять логику без необходимости. Чем больше условий вы добавляете, тем выше шанс сломать сценарий для вариативных товаров, комплектов и сторонних кнопок.

Если редирект не срабатывает

Самая частая причина — AJAX-добавление в корзину. В этом режиме WooCommerce может не делать полноценный переход страницы, а просто обновлять мини-корзину и показывать уведомление. Тогда фильтр редиректа может не дать ожидаемого эффекта, особенно если тема перехватывает кнопку.

Проверьте, не используется ли в теме собственный обработчик кнопки add to cart. Если да, ищите настройки в теме или в её шаблонах WooCommerce. Иногда проблема решается не кодом, а отключением AJAX для кнопки на карточке товара.

Что проверить после внедрения

  1. Добавьте простой товар и убедитесь, что переход идёт на /checkout/.
  2. Проверьте вариативный товар: выбор вариации должен сохраняться.
  3. Протестируйте мобильную версию, особенно если тема использует отдельную кнопку покупки.
  4. Посмотрите, не дублируется ли товар в корзине при повторном клике.
  5. Проверьте, не ломается ли купон, доставка и расчёт налогов на странице оформления заказа.

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

Редирект работает только для части товаров

Обычно это связано с тем, что часть карточек товара использует кастомную кнопку или отдельный шаблон. Решение: сравнить HTML кнопки на стандартном и проблемном товаре, а затем проверить, не подменяет ли тема поведение через JavaScript.

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

Такое бывает, если редирект срабатывает слишком рано или конфликтует с AJAX-обработчиком. В этом случае лучше оставить стандартный add-to-cart поток и редиректить только после успешного ответа WooCommerce, а не через сторонний скрипт.

Появляется ошибка на вариативных товарах

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

Кнопка «Добавить в корзину» перестала работать после правки темы

Частая причина — неправильное место вставки кода или синтаксическая ошибка в functions.php. Если правите тему напрямую, используйте дочернюю тему и проверяйте файл через PHP-валидатор до загрузки на продакшн.

Практические советы по безопасности и производительности

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

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

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

Как убедиться, что всё настроено правильно

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

Для магазина это не просто косметическая правка. Вы убираете лишний шаг из пути покупки и делаете поведение корзины предсказуемым. Главное — не пытаться решить всё JavaScript-ом, если достаточно штатного WooCommerce-фильтра.

Как закрыть дубли страниц в WordPress через robots.txt и noindex без потери индексации
02.09.2026
×
Quizle
Получите больше лидов и увеличьте продажи!
-15%

на премиум плагин WordPress

Получить скидку ⋙