我遇到了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();
}
但它似乎并没有缩进。
答案 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;