在 WooCommerce 中添加到购物车之前清空购物车

2024-05-20

我正在使用 WP 作业管理器和 Woo Subscriptions。

Now:

  1. 最初,我选择了一个套餐(Woo Subscription)
  2. 然后我添加了所有细节。
  3. 但没有提交。
  4. 回到网站,所以要再次购买,我需要选择一个套餐。于是我选择了套餐并填写了详细信息,然后前往付款套餐。
  5. 现在在我的购物车中,两个包裹都存在(即我第一次购买时选择的包裹和最近的包裹)
  6. 如何解决此问题,以便最新选择的商品位于购物车中,并且一旦选择最新的商品,就将较早的商品删除。

我试过这个Woocommerce 从购物车中删除所有产品并将当前产品添加到购物车 https://stackoverflow.com/questions/21181911/woocommerce-delete-all-products-from-cart-and-add-current-product-to-cart但没有帮助。


Updated (有 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;
}

代码位于活动子主题(或主题)的functions.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 文件中. 经过测试并有效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WooCommerce 中添加到购物车之前清空购物车 的相关文章

随机推荐