我正在为一个小的Abandon Cart Recovery Plugin工作,我需要从woocommerce_sessions
表中恢复购物车。
以下是购物车中1个可变产品的非序列化购物车数据。
array (size=1)
'cart' =>
array (size=9)
'product_id' => int 22
'variation_id' => int 24
'variation' =>
array (size=1)
'attribute_pa_color' => string 'green' (length=5)
'quantity' => int 1
'line_total' => float 20
'line_tax' => int 0
'line_subtotal' => int 20
'line_subtotal_tax' => int 0
'line_tax_data' =>
array (size=2)
'total' =>
array (size=0)
empty
'subtotal' =>
array (size=0)
empty
我试图用这些数据恢复整个购物车。我知道可以循环浏览此数组并通过
将项目添加到购物车WC_Cart::add_to_cart( $product_id, $quantity, $variation_id, $variation );
但是有没有更优雅的方式来做,因为数据存储在woocommerce_sessions
表中并且完全兼容WooCommerce?
答案 0 :(得分:1)
我没有找到任何其他解决方案,所以先清理购物车,然后通过购物车数据循环,并以编程方式将商品添加到购物车。这是代码看起来像。
if ( $cart_data ) {
WC()->cart->empty_cart();
foreach ( $cart_data as $product ) {
// Validate Product data
$product_id = isset( $product['product_id'] ) ? (int) $product['product_id'] : 0;
$quantity = isset( $product['quantity'] ) ? (int) $product['quantity'] : 1;
$variation_id = isset( $product['variation_id'] ) ? (int) $product['variation_id'] : 0;
$variation = isset( $product['variation'] ) ? $product['variation'] : array();
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation );
}
WC()->cart->calculate_totals();
}