“添加到购物车”按钮woocommerce上的重定向到结帐的问题

时间:2019-12-11 13:58:25

标签: wordpress woocommerce hook-woocommerce

嗨,我有一个与

类似的问题

How to remove woocommerce added cart items and redirect to checkout?

在产品页面上,当我单击“添加到购物车”时,总是收到此错误“您不能在购物车woocommerce中添加另一个[产品]”

我尝试了LoicTheAztec发布的解决方案

1)添加到购物车之前,先清空购物车(如果购物车不为空)

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

2)购物车重定向至结帐:

add_filter( 'woocommerce_add_to_cart_redirect', 'add_to_cart_checkout_redirection', 10, 1 );
function add_to_cart_checkout_redirection( $url ) {
    return wc_get_checkout_url();
}

3)跳过购物车页面重定向到结帐:

add_action('template_redirect', 'skip_cart_page_redirection_to_checkout');
function skip_cart_page_redirection_to_checkout() {
    if( is_cart() )
        wp_redirect( wc_get_checkout_url() );
}

此解决方案可以解决我的问题,但是第一个代码段删除了我已经在购物篮中的所有其他产品,我应该只重置当前产品,而不是重置整个购物车。如何解决该问题?

1 个答案:

答案 0 :(得分:0)

在第一个代码段中尝试使用此代码,它将检查购物车是否装有该产品,然后在找到here的情况下重定向:

add_filter('woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3);

function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
    if(! WC()->cart->is_empty()) {
        $cartId = WC()->cart->generate_cart_id($product_id);
        $cartItemKey = WC()->cart->find_product_in_cart($cartId);
        if ($cartItemKey) {
          return $passed;
        } else {
          $woocommerce->cart->add_to_cart( $product_id );
          return $passed;
        }
    }
}