WooCommerce: как автоматически добавлять товар в корзину при посещении страницы

Диагностика задачи: зачем и когда нужно автоматическое добавление товара в корзину

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

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

Пошаговое решение: как реализовать автоматическое добавление товара в корзину

1. Определяем ID товара и целевую страницу

Для примера возьмём товар с ID = 123 и страницу с слагом special-offer. Нужно, чтобы при посещении страницы /special-offer/ товар автоматически добавлялся в корзину.

2. Добавляем код в functions.php или в кастомный плагин

Используем хук template_redirect для проверки URL и добавления товара:

function wpfree_add_product_to_cart_automatically() {
    if ( ! is_admin() && is_page('special-offer') ) {
        $product_id = 123; // ID товара для добавления
        $found = false;
        
        // Проверяем, есть ли уже товар в корзине
        foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
            if ( $values['product_id'] == $product_id ) {
                $found = true;
                break;
            }
        }
        
        if ( ! $found ) {
            WC()->cart->add_to_cart( $product_id );
            // Перенаправляем, чтобы избежать повторного добавления при обновлении страницы
            wp_safe_redirect( get_permalink() );
            exit;
        }
    }
}
add_action( 'template_redirect', 'wpfree_add_product_to_cart_automatically' );

Ключевые моменты:

  • Проверяем, что мы не в админке и на нужной странице.
  • Проверяем, что товар ещё не добавлен в корзину, чтобы не дублировать.
  • Добавляем товар и делаем редирект на ту же страницу для сброса POST/GET запросов и предотвращения повторного срабатывания.

3. Если нужен другой вариант — добавление с определённым количеством

Для добавления нескольких единиц товара используйте второй параметр add_to_cart:

WC()->cart->add_to_cart( $product_id, 3 ); // Добавит 3 товара

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

  • Откройте страницу /special-offer/ в режиме инкогнито (чтобы корзина была пустой).
  • Убедитесь, что товар автоматически добавлен в корзину (проверьте в значке корзины и на странице корзины).
  • Обновите страницу — товар не должен добавляться повторно (количество не должно увеличиваться).
  • Проверьте, что функционал не срабатывает на других страницах.

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

  • Товар добавляется несколько раз при обновлении страницы
    Решение: используйте перенаправление wp_safe_redirect после добавления товара, чтобы избежать повторного срабатывания при перезагрузке.
  • Код не работает, корзина всегда пустая
    Убедитесь, что сессия WooCommerce инициализирована. Функция должна вызываться после того, как объект корзины готов. Хук template_redirect подходит. Также проверьте, что корзина не пуста по другим причинам (кэш, куки).
  • Добавляется не тот товар
    Проверьте правильность ID товара. Можно получить ID через админку или функцию wc_get_product_id_by_sku(), если используете SKU.
  • Конфликты с кэшированием
    Если на сайте включено кэширование страниц (например, через плагин или сервер), автоматическое добавление не будет работать корректно. Исключите страницу из кэша или используйте AJAX-реализацию.

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

  • Не добавляйте товар в корзину на каждой странице без условия — это раздражает пользователей и влияет на производительность.
  • Используйте проверку nonce или другие методы защиты, если добавление запускается по AJAX.
  • Для страниц с высокой посещаемостью отключите кэш для страниц с автоматическим добавлением товара.
  • Если используете WooCommerce совместно с плагинами кеширования (например, WP Rocket, LiteSpeed), настройте исключения для таких страниц.

Сравнение способов реализации автоматического добавления товара

СпособОписаниеПреимуществаНедостатки
PHP-хук template_redirectДобавление товара при загрузке страницы на сервереПростота реализации, не требует JSПроблемы с кэшированием, возможны повторные добавления без редиректа
AJAX-запрос после загрузки страницыДобавление товара через JS после загрузкиОбходит кэш, можно гибко управлять процессомСложнее в реализации, зависит от JS
Использование плагиновГотовые решения с настройкамиМеньше кода, поддержкаМогут быть избыточными, нагрузка
Как автоматически создать календарь мероприятий в WordPress с помощью кода и плагинов
05.03.2026
Автоматическое удаление записей и метаданных при удалении пользователя в WordPress
22.04.2026
Оптимизация WooCommerce за счёт загрузки изображений по требованию (lazy load)
18.04.2026
Как создать динамическую форму в WordPress на PHP и AJAX
13.11.2025
WooCommerce: автоматическое удаление неактивных заказов по срокам
04.06.2026