Woocommerce购物车未成功付款清算

时间:2018-02-13 08:04:56

标签: php function woocommerce

我遇到了WooCommerce在从支付网关 - Payfast重定向后没有清理购物车的问题。在页面刷新之前,项目仍然保留在购物车中。

我已将此代码实施到我的子主题的functions.php中,以强制购物车清除页面上的slug感谢,结帐和订单接收。

//Force Clear Cart
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ( is_page( array( 'thank-you', 'checkout', 'order-received' ) ) && isset( $_GET['empty-cart'] ) ) { 
    $woocommerce->cart->empty_cart(); 
}
} 

add_action( 'woocommerce_thankyou', 'order_received_empty_cart_action', 10, 
1 );
function order_received_empty_cart_action( $order_id ){
WC()->cart->empty_cart();
}

但它似乎并没有缩进。

1 个答案:

答案 0 :(得分:1)

在购物车菜单项已加载后,功能order_received_empty_cart_action()通常会在页面下方向下运行。所以你只能看到下一页加载时清理购物车。

然后woocommerce_clear_cart_url()正在init操作上运行,通常页面的WP_Query尚未运行,因此is_page()将返回false,因为它不知道它是什么页面然而。如果你在wp_head()上运行它,那么效果很好。

这是一个综合解决方案



<?php
add_action( 'wp_head', 'my_clear_cart' );
function my_clear_cart() {
	if ( is_page( array( 'thank-you', 'order-received' ) ) && isset( $_GET['order-received'] ) ) {
		WC()->cart->empty_cart();
	}
}
&#13;
&#13;
&#13;