WC_Cart::add_to_cart() — добавление товара в корзину в WooCommerce

Создает и возвращает идентификатор товара в корзине. Если же до использования функции товар уже был в корзине, то просто будет добавлена ещё одна единица этого же товара (если такая возможность имеется).

$korzina = new WC_Cart();
$korzina->add_to_cart( $product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array() )

А вот это в общем то более правильный вариант:

global $woocommerce;
$woocommerce->cart->add_to_cart( $product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array() )
$product_id
(целое число) ID товара, также непосредственно сюда можно передать ID вариации товара. Параметр обязателен, функция возратит false, если его не указать.
$quantity
(целое число) Количество единиц товара.
$variation_id
(целое число) ID вариации товара. Берём его отсюда:

ID вариации товара для добавления в корзину.
$variation
(массив) Ассоциативный массив атрибутов товара.
$cart_item_data
(массив) Дополнительные данные в формате array( 'ключ' => значение ), которые требуется передать в хуки внутри функции, которые вы сами можете посмотреть здесь. Если же вы хотите, чтобы я разобрал какой-то из них на примере — не вопрос, просто напишите об этом в комментариях.

Пример 1. Простое использование

Без создания объекта, напрямую через класс функцию выполнить не получится.

$korzina = new WC_Cart();
$korzina->add_to_cart( 544 );

Пример 2. Добавляем текущий товар в корзину, используя глобальный объект текущего поста и глобальный объект $woocommerce

Я говорю, что это более правильный вариант, потому что объект корзины класса WC_Cart уже создан и находится в $woocommerce->cart и не нужно создавать его ещё раз.

global $post, $woocommerce;
$woocommerce->cart->add_to_cart( $post->ID );

Комментарии 2

  • Valeriy17 сентября 2016 в 10:09 #

    Здравствуйте. Как в выборке продуктов, что располагается на произвольной странице, можно добавить кнопку, по которой добавляется 1 позиция товара в корзину, без перезагрузки?
    В карточке товара у меня это реализован так:

    <button type="submit" class="btn btn-red"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
    • Миша18 сентября 2016 в 11:09 #

      Здравствуйте,
      думаю вам должен помочь пост про ajax — это с учетом, что страница кастомная, если стандартная, то вроде где-то в настройках есть.

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...