嗨,我有一个与
类似的问题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() );
}
此解决方案可以解决我的问题,但是第一个代码段删除了我已经在购物篮中的所有其他产品,我应该只重置当前产品,而不是重置整个购物车。如何解决该问题?
答案 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;
}
}
}