Woocommerce добавить в корзину (через код) не работает должным образом - PullRequest
0 голосов
/ 09 января 2019

У меня есть эта функция для добавления нескольких продуктов по почте:

global $woocommerce;

if ( empty( $_REQUEST['add-to-cart-manual'] ) ) {
    return;
}

$product_var_ids = explode( ',', $_REQUEST['add-to-cart-manual'] );

foreach ( $product_var_ids as $product_var_id ) {
    $pdt_var_temp = explode( '|', $product_var_id );
    $product_id = $pdt_var_temp[0];
    $variation_id = $pdt_var_temp[1];
    $variation_attribute = $pdt_var_temp[2];
    $variation_attribute_value = $pdt_var_temp[3];

    $quantity= 1;

    $woocommerce->cart->add_to_cart( $product_id, $quantity, $variation_id, array( $variation_attribute  => $variation_attribute_value ), null );
} 

Эта функция находится в ловушке инициализации и работает с этим форматом:

product_id1 | variation_id1 | variation_attribute1 | variation_value1, product_id2 | variation_id2 | variation_attribute2 | variation_value2

Проблема в том, что первый продукт добавлен. Ir перезаписывает количество в корзине. Например, если в корзине 2 товара 900 и я выполняю,

?add-to-cart-manual=900|808|Talla|04,900|808|Talla|04,900|808|Talla|04

тогда товар 900 изменится на 3 пункта, а не на 5 (2 + 3)

Но если я добавлю больше продуктов, остальные будут работать нормально. Например, если в корзине есть 2x900 и 3x901 и я выполняю

?add-to-cart-manual=900|808|Talla|04,900|808|Talla|04,901|808|Talla|06,901|808|Talla|06

затем продукт 900 меняется на 2 (перезаписывается), а продукт 901 изменяется на 5 (3 + 2, что верно)

Я провел много испытаний, и это всегда одно и то же. Первый продукт перезаписан, но остальное работает нормально.

Кто-нибудь знает, что может происходить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...