如果添加新产品,有清空购物车的方法。
function wdm_empty_cart( $cart_item_data, $product_id, $variation_id )
{
global $woocommerce;
$woocommerce->cart->empty_cart();
}
但是我想要的只是如果你添加相同的乘积。所以添加if ( $in_cart )
完成了这项工作,但我也不想清空整个购物车。
只想删除之前添加的相同产品,保留其他产品。
我的意思是覆盖。
您可以使用woocommerce_add_to_cart_validation
动作挂钩并检查购物车中已经存在的产品。代码将放在您的活动主题函数。php文件中。
add_filter('woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 1, 3);
function remove_cart_item_before_add_to_cart($passed, $product_id, $quantity) {
$already_in_cart = false;
foreach( WC()->cart->get_cart() as $key => $item ){
// Check if the item is already is in cart.
if( $item['product_id'] == $product_id ){
$already_in_cart = true;
$existing_product_key = $key;
break;
}
}
if( $already_in_cart ){
WC()->cart->remove_cart_item($existing_product_key);
}
return $passed;
}