我有一个相当简单的函数,它获取多个产品数据并通过 foreach 循环将这些产品批量添加到购物车。 问题是,如果购物车已经包含任何添加的产品,我的循环中的第一个产品将被跳过而不是添加。第一个之后的任何其他产品,添加都没有问题。如果购物车是空的,所有产品都可以添加,包括第一个。
我已经转储了所有变量,所有数据都很好,都是整数。我尝试检查
cart_item_key
并且它被正确分配。我尝试更改代码以首先查找购物车中已有的任何给定产品,然后只更新它们的数量,但这并没有解决问题。还尝试在其中添加一些WC()->cart->maybe_set_cart_cookies();
语句,但没有运气。
在寻找答案时,我发现有些人在谈论购物车会话和持久购物车。但我不确定这是否相关。
感谢您的帮助!
代码如下:
foreach ( $products_data as $product_data ) {
$product_id = $product_data['product_id'];
$variation_id = isset( $product_data['variation_id'] ) ? $product_data['variation_id'] : false;
$quantity = isset( $product_data['quantity'] ) ? $product_data['quantity'] : 1;
// Add the product or variation to the cart with the unique key
if ( $variation_id !== false ) {
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id );
} else {
WC()->cart->add_to_cart( $product_id, $quantity, 0, array(), array() );
}
}