dongzituo5530 2015-07-13 19:39
浏览 27
已采纳

WooCommerce检查购物车内容添加到购物车

I only have one product to display, but I offer two options for it: A payment plan (handled through a subscription plugin) and a single payment. I have them displayed on my site as a grouped and both options have an "Add to Cart" Button. I don't want either option to be in the cart at the same time as the other. What I would like to do is either,

A) Empty the cart before each time the add to cart is clicked.

or

B) Check if the cart contains a product already (via productid), and remove the payment plan if the full pay is selected, or vice versa. Here is something I've come up with for this option, but I'm a bit lost and it's not functioning quite right.

        global $woocommerce;
        if ($product_id = 66){
            foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
                 echo $cart_item_key;
                 if($cart_item['product_id'] == '69'){
                    //remove single product
                    $woocommerce->cart->remove_cart_item($cart_item_key);
                 }
            }
        }
        elseif ($product_id = 69){
            foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
                 echo $cart_item_key;
                 if($cart_item['product_id'] == '66'){
                    //remove single product
                    $woocommerce->cart->remove_cart_item($cart_item_key);
                 }
            }
        }

I'm thinking of adding this to the add_to_cart method before the try/catch to throw any errors. Can anyone help me figure a better solution?

  • 写回答

1条回答 默认 最新

  • douxing7101 2015-07-14 16:54
    关注

    Emptying the cart would be very easy

    add_filter( 'woocommerce_add_to_cart_validation', 'so_31392001_empty_cart', 10, 3 );
    
    function so_31392001_empty_cart( $valid, $product_id, $quantity ) {
    
        WC()->cart->empty_cart();
    
        return $valid;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?