【问题标题】:WooCommerce check cart contents on add to cartWooCommerce 在添加到购物车时检查购物车内容
【发布时间】:2015-07-15 00:54:26
【问题描述】:

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

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 方法中以引发任何错误。谁能帮我想出一个更好的解决方案?

【问题讨论】:

    标签: php wordpress woocommerce e-commerce


    【解决方案1】:

    清空购物车很容易

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

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2021-07-26
      • 2015-10-10
      • 1970-01-01
      • 2015-08-18
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多