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

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

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

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

Пошаговое решение: добавляем товар в корзину программно

1. Определение товара и условия добавления

Первым делом нужно понять, какой товар и при каких условиях должен добавляться автоматически. Например, добавим товар с ID 123 при заходе на страницу с определённым slug.

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

Хук template_redirect подходит для проверки условий и изменения корзины до вывода контента.

function wpdemo_add_product_to_cart_automatically() {
    if (is_admin()) {
        return; // не запускаем в админке
    }

    // Проверяем, находимся ли мы на нужной странице
    if (is_page('special-offer')) { // замените на нужный slug
        $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);
        }
    }
}
add_action('template_redirect', 'wpdemo_add_product_to_cart_automatically');

3. Особенности реализации

  • Проверка is_admin() исключит добавление товара при работе в админке.
  • Проверяем наличие товара в корзине, чтобы избежать дублирования.
  • Условие is_page('special-offer') замените на нужный URL или функцию проверки.

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

Чтобы убедиться, что товар добавляется автоматически:

  1. Очистите корзину (если необходимо) или используйте приватное окно браузера.
  2. Перейдите на страницу с указанным slug, например /special-offer/.
  3. Откройте корзину или мини-корзину — товар с ID 123 должен появиться автоматически.
  4. Если товар не добавляется, проверьте, активирована ли корзина WooCommerce (WC()->cart должен быть доступен).
  5. Для отладки можно временно добавить error_log() внутри функции.

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

  • Товар не добавляется в корзину: Убедитесь, что WooCommerce инициализирован, корзина доступна (например, хук template_redirect вызывается не слишком рано), и ID товара корректен.
  • Дублирование товара в корзине: Проверьте, что реализована проверка существования товара в корзине до добавления.
  • Добавление товара происходит в админке или Ajax запросах: Добавьте условие if (is_admin()) return; и проверяйте тип запроса, чтобы исключить нежелательное поведение.
  • Конфликты с кешированием: Если сайт использует кеш, добавление товара может не сработать сразу. Настройте исключения кеша для страниц с автоматическим добавлением.

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

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

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

СпособПлюсыМинусы
Программное добавление через template_redirectГибко, без плагинов, можно настроить сложные условияТребует навыков, возможны конфликты с кешем
Плагины автоматизации корзины (например, WooCommerce Auto Add Products)Простота установки, готовый интерфейсМожет содержать лишний функционал, нагрузка
Использование JavaScript для добавления товараРаботает на клиенте, можно быстро внедритьМеньше надежности, зависит от браузера, SEO-неэффективно
Как использовать WPCommunity для создания форума на WordPress
27.02.2026
Как использовать хук WooCommerce 'woocommerce_order_status_changed' для автоматизации
25.04.2026
Как использовать AJAX для пагинации в WordPress с примерами кода
24.03.2026
Как создать настройки для своего плагина WordPress с примерами кода
24.11.2025
Как использовать хуки WordPress для автоматизации задач
21.12.2025