WooCommerce 从会话数据恢复购物车

问题描述 投票:0回答:2

我正在开发一个小型的废弃购物车恢复插件,我需要从

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?

php wordpress woocommerce
2个回答
2
投票

我没有找到任何其他与此相关的解决方案,因此只需先清除购物车,然后使用购物车数据进行循环,并以编程方式将商品添加到购物车。这是代码的样子。

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();
}

0
投票

我如何从 woocommerce 获取有关废弃购物车列表的数据到我的应用程序,例如获取我使用的订单(wp-json/wc/v3/orders)的 api 端点是什么,那么废弃购物车的内容是什么

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.