php – 在Woocommerce中添加到购物车之前清空购物车

我正在使用WP作业管理器和Woo订阅.

现在:

>最初我选择了一个包(woo订阅)
>然后我添加了所有细节.
>但没有提交.
>回到网站,所以再次购买我需要选择一个包.所以我选择了包裹并填写了详细信息并转到付款包.
>现在在我的购物车中,两个包都存在(即我选择的没有第一次购买的包和最近的包)
>如何解决这个问题,以便最新选择的一个在购物车中,并且一旦选择了最新的一个,就会删除之前的一个.

我试过这个Woocommerce Delete all products from cart and add current product to cart但没有帮助.

解决方法:

更新(2种不同的替代品):

您应该尝试以下方法

add_filter( 'woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 20, 3 );
function remove_cart_item_before_add_to_cart( $passed, $product_id, $quantity ) {
    if( ! WC()->cart->is_empty())
        WC()->cart->empty_cart();
    return $passed;
}

代码位于活动子主题(或主题)的function.PHP文件中.测试并使用ajax-add-to-cart和普通的add-to-cart ……

或者你可以使用另一个将保留在购物车中的最后添加的项目:

// Keep only last cart item
add_action( 'woocommerce_before_calculate_totals', 'keep_only_last_cart_item', 30, 1 );
function keep_only_last_cart_item( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $cart_items = $cart->get_cart();

    if( count($cart_items) > 1 ){
        $cart_item_keys = array_keys( $cart_items );
        $cart->remove_cart_item( reset($cart_item_keys) );
    }
}

代码位于活动子主题(或主题)的function.PHP文件中.经过测试和工作

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...