如何删除woocommerce添加购物车商品并重定向到结帐?

时间:2018-01-29 13:31:26

标签: php wordpress woocommerce hook-woocommerce

我有一个Woocommerce表格来“添加资金”。它有一个金额输入字段(20美元,30美元等)和一个提交按钮,重定向到购物车页面,输入金额为总计。

重定向到结帐工作正常,但如果用户放弃购物车并尝试重新订购,则购物车商品不会被删除。

我尝试了许多重定向结帐的解决方案,但只有一个有效。

重定向到结帐的工作解决方案:

WooCommerce - Skip cart page redirecting to checkout page

无法重定向到结帐的解决方案:

https://wordpress.stackexchange.com/questions/267071/redirect-to-woocommerce-checkout-after-adding-to-cart-item-already-in-cart

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/

https://wordpress.stackexchange.com/questions/267071/redirect-to-woocommerce-checkout-after-adding-to-cart-item-already-in-cart

使用Woocommerce 3.2.6和WordPress 4.9.2

1 个答案:

答案 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)