繁体   English   中英

将特定产品添加到购物车时如何删除特定的购物车项目?

[英]How to remove a specific cart item when adding to cart a specific product?

使用 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 文件或任何插件文件中。

此代码经过测试并有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM