2017-12-05 10 views
1

カート内の既存の商品数をオーバーライドするために多くの努力をしましたが、何もしませんでした。製品がカートに追加され、最大使用可能な製品数量を設定既にカートに入っている商品の数量をオーバーライドします。 - オークション

add_action('woocommerce_add_to_cart', 'add_to_cart_qty', 10, 6); 
function add_to_cart_qty($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data){ 

    $real_product_id = $variation_id > 0 ? $variation_id : $product_id; 

    $product = wc_get_product($real_product_id); 
    $product_stock = $product->get_stock_quantity(); 

    // Zero or negative stock (remove the product) 
    if($product_stock <= 0 && $product->get_manage_stock()){ 
     WC()->cart->remove_cart_item($cart_item_key); 
     return; 
    } 

    if($quantity > $product_stock && $product->get_manage_stock()){ 
     WC()->cart->set_quantity($cart_item_key, $product_stock); 
    } 
} 

は実際に私はこのコードを持っています。 しかし、私は、我々は二つの方法で、この問題を扱うことができると思い

...顧客がアイテム数量を変更すると、カートページで行動することも必要があります。

  • 我々は、カートに追加で製品を除くいずれかの最初のすでにカートに入れられている同じ製品の、同じ製品の数量を更新することです。
  • 2番目の方法は、同じ製品のカートに追加する既存製品の数量を更新します。

私はこれに対して多くの異なるスニペットコードを試しましたが、結果はありません。

ご協力いただければ幸いです。 woocommerce_after_cart_item_quantity_updateアクションフックに引っかけ、このカスタム関数を使用して

答えて

1

は、カートの数量を更新する際に、製品の在庫量よりも多くを追加するために、顧客を避けることができます:

add_action('woocommerce_after_cart_item_quantity_update', 'update_cart_items_quantities', 10, 3); 
function update_cart_items_quantities($cart_item_key, $quantity, $old_quantity){ 
    $cart = WC()->cart; 
    $cart_data = $cart->get_cart(); 
    $cart_item = $cart_data[$cart_item_key]; 
    $manage_stock = $cart_item['data']->get_manage_stock(); 
    $product_stock = $cart_item['data']->get_stock_quantity(); 

    // Zero or negative stock (remove the product) 
    if($product_stock <= 0 && $manage_stock){ 
     unset($cart->cart_contents[ $cart_item_key ]); 
    } 
    if($quantity > $product_stock && $manage_stock){ 
     $cart->cart_contents[ $cart_item_key ]['quantity'] = $product_stock; 
    } 
    return $product_quantity; 
} 

コードは、あなたのfunction.phpファイルに行きますアクティブな子供のテーマ(またはアクティブなテーマ)または任意のプラグインファイルに保存されます。

このコードはテストされており、製品のバリエーションにも対応しています。

+0

私のためにあなたの努力のために非常に@LoicTheAztecありがとう、それは魅力のように動作します私はあなたに感謝しています#Loic(y) –

関連する問題