我有一个Woocommerce表格来“添加资金”。它有一个金额输入字段(20美元,30美元等)和一个提交按钮,重定向到购物车页面,输入金额为总计。
重定向到结帐工作正常,但如果用户放弃购物车并尝试重新订购,则购物车商品不会被删除。
我尝试了许多重定向结帐的解决方案,但只有一个有效。
重定向到结帐的工作解决方案:
WooCommerce - Skip cart page redirecting to checkout page
无法重定向到结帐的解决方案:
Woocommerce add to cart button redirect to checkout
N.B。我已经为重定向添加了工作和不工作的解决方案 结帐,因为它可以提供关于为什么空车的洞察力 解决方案无效。
在添加新产品之前清空推车,没有一个解决方案正常工作:
https://gist.github.com/viniciusrtf/b49403b5f87dcd7699c1
https://hungred.com/how-to/empty-woocommerce-cart-adding-item/
使用Woocommerce 3.2.6和WordPress 4.9.2
答案 0 :(得分:4)
首先,你需要在WooCommerce设置>产品>在“添加到购物车行为”中显示以启用复选框:成功添加后重定向到购物车页面
然后你将需要以下3个钩子函数:
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() );
}
代码进入活动子主题(或活动主题)的function.php文件。
经过测试并使用(在店面主题上使用Woocommerce 3.2.6和WordPress 4.9.2)。