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

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

Ниже разберём, как понять, что именно вызывает редирект, и как отключить его без поломки корзины и оформления заказа.

Когда проблема действительно в редиректе WooCommerce

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

Как быстро диагностировать причину

  • Добавьте простой товар со страницы каталога и посмотрите, меняется ли URL на /cart/ или аналогичный.
  • Проверьте, появляется ли всплывающее сообщение WooCommerce «Товар добавлен в корзину» без перехода на другую страницу.
  • Временно отключите плагины, которые меняют поведение корзины, быстрый заказ, мини-корзину или AJAX-добавление.
  • Смените тему на стандартную на тестовом стенде, если есть подозрение на кастомный шаблон.

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

Что можно сделать: настройки, фильтр или код

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

СпособКогда подходитПлюсыМинусы
Настройки темы / плагинаЕсли редирект включён расширениемБез кода, быстроЗависит от конкретного решения
Фильтр WooCommerceЕсли нужен точечный контрольПредсказуемо, легко проверитьНужно добавить код
Отключение AJAX/кнопокЕсли нужна совсем простая логикаМинимум магииХуже UX для каталога

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

Если задача простая — не уводить пользователя в корзину после добавления товара — достаточно вернуть текущий URL. Код лучше добавлять в дочернюю тему или в небольшой mu-plugin, а не в файлы родительской темы.

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

function wp7_keep_user_on_current_page( $url ) {
    if ( isset( $_REQUEST['add-to-cart'] ) ) {
        return wp_get_referer() ? wp_get_referer() : $url;
    }

    return $url;
}

Этот вариант возвращает пользователя на страницу, с которой он добавлял товар. Если wp_get_referer() не доступен, WooCommerce использует исходный URL.

Если нужно оставить пользователя на странице товара, а не на каталоге

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

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

function wp7_redirect_back_to_product( $url ) {
    if ( is_product() ) {
        return get_permalink( get_the_ID() );
    }

    return $url;
}

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

Как отключить редирект только для части товаров

Иногда уводить в корзину не нужно только для некоторых категорий или типов товаров. Например, для товаров с вариациями или для каталога с быстрым повторным добавлением. В этом случае можно проверять ID товара и менять поведение точечно.

<?php
add_filter( 'woocommerce_add_to_cart_redirect', 'wp7_redirect_for_specific_products', 10, 2 );

function wp7_redirect_for_specific_products( $url, $product ) {
    $product_id = isset( $_REQUEST['add-to-cart'] ) ? absint( $_REQUEST['add-to-cart'] ) : 0;

    if ( in_array( $product_id, array( 123, 456 ), true ) ) {
        return wp_get_referer() ? wp_get_referer() : $url;
    }

    return $url;
}

Здесь важно не путать ID товара с ID вариации. Если товар вариативный, проверяйте именно тот ID, который приходит в запросе, и тестируйте сценарий на реальном фронтенде.

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

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

  • Добавьте простой товар со страницы каталога и убедитесь, что URL не меняется на корзину.
  • Добавьте товар со страницы карточки и проверьте, что вы остались на той же странице.
  • Проверьте, что мини-корзина и счётчик товаров обновляются корректно.
  • Откройте корзину вручную и убедитесь, что товар действительно добавился.
  • Если используется кэш, очистите его и повторите тест в приватном окне.

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

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

Код добавили не туда

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

Редирект делает не WooCommerce, а плагин

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

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

На карточке товара и в каталоге могут быть разные шаблоны кнопки «В корзину». Иногда на одной странице AJAX включён, а на другой — нет. Тестируйте оба сценария.

Неправильно обрабатывают реферер

Если пользователь пришёл из поиска, фильтра или внешней ссылки, wp_get_referer() может вернуть неожиданный адрес или пустое значение. Поэтому в коде всегда нужен запасной вариант.

Что учесть для безопасности и производительности

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

Практически полезно держать такие изменения в одном месте: либо в отдельном мини-плагине, либо в mu-plugin. Так проще отключать и тестировать. Если вы ведёте магазин на теме Reboot или другой теме WPShop, проверяйте, не дублирует ли тема собственный сценарий кнопки «В корзину». Для чистки лишних дублирующих настроек и мусорных опций иногда удобнее сначала навести порядок в конфигурации, чем сразу писать новый код.

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

Как удалить неактивных пользователей в WordPress
30.03.2026
WooCommerce: как автоматически удалять товары после первого заказа
22.06.2026
Как удалить пустые таксономии в WordPress
11.04.2026
WooCommerce: как автоматически удалять товар после первого заказа
16.05.2026
Как создать динамические формы с помощью WPForms в WordPress
22.12.2025