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 или следите за мной в социальных сетях.
  • alex morozov: Добрый вечер! у меня возникла следующая проблема. Я делаю фотоальбомы, чтобы они выглядели "как в контакте". Так вот, та...

  • Vladislav: Если эту муть убрать, то исчезает меню, и появляется описание под миниатюрами, которого не должно быть, как вы видите, я...

  • Миша: Либо размеры изображений вам помогут, либо CSS. И строку 14 гляньте, там муть какая-то.

  • Vladislav: Подправил имеющийся у меня код, по вашим рекомендациям, миниатюры начали отображаться, но они стали очень огромными, что...

  • Миша: Лишь предложил решение. Думаю можно нашаманить и так, чтобы чисто для рубрик было, не уверен только, что обойдётся без и...