使用WooCommerce,我希望看看是否可以删除特定商品(来自购物车),如果购物车中有其他特定商品.
我的网上商店有一个免费版本的产品,可以让客户基本访问网站内容.付费版本将开放更多内容访问权限.这样,如果免费版本已经在购物车中,并且付费版本被添加到购物车,则免费版本将从购物车中删除.
我尝试查看可能的选项和插件,但大多数都有基于定价和类似的条件.
任何帮助表示赞赏,如果我在上到这里之前找到答案,我将分享我是如何得到它的.
谢谢.
是的,例如在woocommerce_add_to_cart
钩子中挂钩的自定义函数是可能的:
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文件中,或者也可以放在任何插件文件中.
此代码经过测试和运行.