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

时间:2015-07-13 19:39:33

标签: php wordpress woocommerce e-commerce

我只有一个产品可供展示,但我提供两种选择:付款计划(通过订阅插件处理)和单笔付款。我把它们作为一个分组显示在我的网站上,两个选项都有一个"添加到购物车"按钮。我不希望任何一个选项与另一个同时在购物车中。我想做的是,

A)每次点击添加到购物车之前清空购物车。

B)检查购物车是否已包含产品(通过productid),如果选择了全额付款,则删除付款计划,反之亦然。以下是我为此选项提出的建议,但我有点迷失,而且运作不正常。

        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);
                 }
            }
        }

我想在try / catch之前将其添加到add_to_cart方法以抛出任何错误。有谁能帮我找到更好的解决方案?

1 个答案:

答案 0 :(得分:0)

清空推车非常容易

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;
}