将特定产品添加到购物车时如何删除特定的购物车项目?
使用 WooCommerce,我想看看是否可以从购物车中删除特定商品(如果购物车中有另一个特定商品).
With WooCommerce, I am looking to see if it's possible to remove a specific item (from cart), if another specific item is in the cart.
我的网上商店有一个产品的免费版本,让客户可以基本访问网站内容.付费版本将开放更多内容访问权限.这样,如果免费版本已经在购物车中,并且付费版本被添加到购物车中,那么免费版本将从购物车中删除.
My web shop has a free version of a product which gives to customer a basic access to site content. The paid version will open up more access to content. This way if the free version is already in the cart, and the paid version gets added to cart, then the free version will be removed from cart.
我尝试查看可能的选项和插件,但其中大多数都有基于定价和类似内容的条件.
I tried looking at possible options and plugins but most of them have conditions based on pricing and things like that.
推荐答案
是的,例如在 woocommerce_add_to_cart
钩子中挂钩的自定义函数是可能的:
Yes is possible with a custom function hooked for example in woocommerce_add_to_cart
hook:
add_action( 'woocommerce_add_to_cart', 'check_product_added_to_cart', 10, 6 );
function check_product_added_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {
// Set HERE your targeted product ID
$target_product_id = 31;
// Set HERE the product ID to remove
$item_id_to_remove = 37;
// Initialising some variables
$has_item = false;
$is_product_id = false;
foreach( WC()->cart->get_cart() as $key => $item ){
// Check if the item to remove is in cart
if( $item['product_id'] == $item_id_to_remove ){
$has_item = true;
$key_to_remove = $key;
}
// Check if we add to cart the targeted product ID
if( $product_id == $target_product_id ){
$is_product_id = true;
}
}
if( $has_item && $is_product_id ){
WC()->cart->remove_cart_item($key_to_remove);
// Optionaly displaying a notice for the removed item:
wc_add_notice( __( 'The product "blab bla" has been removed from cart.', 'theme_domain' ), 'notice' );
}
}
此代码位于活动子主题(或主题)的 function.php 文件或任何插件文件中.
此代码已经过测试且有效.
This code is tested and works.
相关文章