2013-11-22 43 views
5

我正在實施添加到購物車按鈕旁邊的移除項目按鈕,但是我在獲取單個產品的變量$ cart_item_key時遇到問題。我有全局變量$ woocommerce和$ product,但使用$ cart_item_key的唯一方法是foreach,它根本沒有幫助我,因爲我需要將我的代碼添加到add-to-cart.php中。

回答

9

必須設置這樣的循環中刪除鏈接的每個產品,

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 

echo $cart_item_key; 
if($cart_item['product_id'] == $your_product_id_to_remove){ 
    //remove single product 
} 
} 

在任何情況下,你有車項目列表;從那你必須刪除,所以foreach將符合您的要求。

希望它的幫助..

+0

謝謝!有用!就是我一直在尋找的東西! –

+0

不客氣:) –

+1

這似乎是一個非常低效的方式來實現這一目標。我知道WooCommerce的結構或多或少地強制這種類型的解決方案 - 但是,我們基本上是這麼說的: 「對於購物車中的每個物品,請檢查購物車中的所有其他物品,如果它是一場比賽 - 做點什麼「。 做了基本的數學運算後,我們可以清楚地看到,我們必須遍歷我們的購物車項目'Y平方'次(其中Y是購物車中物品的數量)。 1 item - 2 iterations 2 items - 4 iterations 3 items - 9 iterations 4 items - 16 iterations –

2

此代碼爲我工作。感謝Jobin Jose(https://stackoverflow.com/users/1258004/jobin-jose)提供的解決方案!

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 
    if ($cart_item['product_id'] == $product->id) { 
     echo apply_filters('woocommerce_cart_item_remove_link', sprintf('<a href="%s" class="remove" title="%s">&times;</a>', esc_url($woocommerce->cart->get_remove_url($cart_item_key)), __('Remove this item', 'woocommerce')), $cart_item_key); 
} 
相關問題