2016-10-26 7 views
1

私は小さなAbandon Cart Recovery Pluginのために働いており、woocommerce_sessionsテーブルからカートを回復する必要があります。WooCommerceセッションデータからカートを回復

ここにはカート内の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互換されるようにそれを行うための任意のよりエレガントな方法は何ですか?

答えて

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(); 
} 
関連する問題