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

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

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

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

Как работать с видео в WooCommerce: ключевые моменты

  • Видео как товар или как дополнительный элемент (товар-аксессуар).
  • Добавление видео в корзину через программное добавление товаров (функция WC()->cart->add_to_cart()).
  • Связывание видео с основным товаром через мета-поля или custom fields.
  • Обработка корзины через хуки WooCommerce (woocommerce_add_to_cart, woocommerce_before_calculate_totals).

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

1. Определяем ID видео товара

Для начала нужно знать ID видео товара, который нужно автоматически добавить. Допустим, ID видео — 123.

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

add_action('woocommerce_add_to_cart', 'auto_add_video_product_to_cart', 10, 6); 
function auto_add_video_product_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {
    // ID основного товара, при добавлении которого нужно добавить видео
    $main_product_id = 456; 
    // ID видео товара
    $video_product_id = 123;

    if ($product_id == $main_product_id) {
        // Проверяем, что видео товар ещё не в корзине
        $found = false;
        foreach (WC()->cart->get_cart() as $cart_item) {
            if ($cart_item['product_id'] == $video_product_id) {
                $found = true;
                break;
            }
        }
        if (!$found) {
            WC()->cart->add_to_cart($video_product_id);
        }
    }
}

3. Обработка удаления: чтобы видео удалялось, если удалён основной товар

add_action('woocommerce_cart_item_removed', 'remove_video_when_main_removed', 10, 2);
function remove_video_when_main_removed($cart_item_key, $cart) {
    $cart_items = $cart->get_cart();
    $main_product_id = 456;
    $video_product_id = 123;

    $main_exists = false;
    foreach ($cart_items as $key => $item) {
        if ($item['product_id'] == $main_product_id) {
            $main_exists = true;
            break;
        }
    }

    if (!$main_exists) {
        // Удаляем видео из корзины
        foreach ($cart_items as $key => $item) {
            if ($item['product_id'] == $video_product_id) {
                $cart->remove_cart_item($key);
            }
        }
    }
}

Проверка результата

  • Добавьте в корзину основной товар с ID 456.
  • Проверьте, что в корзине автоматически появился видео товар с ID 123.
  • Удалите основной товар из корзины — видео товар должен удалиться автоматически.
  • Оформите заказ и убедитесь, что видеофайл доступен для скачивания или просмотра.

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

  • Видео не добавляется в корзину: проверьте правильность ID видео товара, убедитесь, что товар опубликован и доступен.
  • Видео добавляется несколько раз: добавьте проверку, чтобы видео не добавлялось повторно (как в коде выше).
  • Видео не удаляется при удалении основного товара: убедитесь, что обработчик удаления корректно проверяет наличие основного товара в корзине.
  • Конфликт с другими плагинами корзины: протестируйте на чистом WooCommerce, отключите сторонние расширения.

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

  • Не используйте хук woocommerce_before_calculate_totals для добавления товаров в корзину — это может привести к бесконечным циклам.
  • Для больших магазинов с множеством товаров используйте опцию meta data для связывания продуктов, чтобы избежать жёсткой привязки ID в коде.
  • Всегда проверяйте наличие товара в корзине перед добавлением, чтобы избежать дублирования и нагрузки на сессию.
  • Ограничьте права доступа к видеофайлам через WooCommerce Downloadable Products, чтобы избежать несанкционированного скачивания.

Сравнение вариантов реализации

МетодПлюсыМинусыПример
Программное добавление через хук woocommerce_add_to_cartГибко, быстро, без плагиновНужен код, требует поддержкиКод из статьи
Плагин для связанных товаров (например, Product Bundles)Простой интерфейс, много функцийПлатный, дополнительная нагрузкаWooCommerce Product Bundles
Использование групповых товаров или вариацийВстроено в WooCommerceМенее гибко для видеоСтандартные вариации
Как использовать Video API в WordPress для точного контроля воспроизведения видео
21.07.2026
Как создать видео капчу в WordPress
22.12.2025
Как автоматически добавлять видео в корзину WooCommerce на WordPress
25.06.2026
Как использовать видео-шорткоды с параметрами для управления воспроизведением в WordPress
02.07.2026
Как оптимизировать видео поток в WordPress для живых трансляций
13.01.2026