使用查询字符串和重定向清除 WooCommerce 购物车

Clear WooCommerce Cart with a Query String and Redirect

我正在尝试使用此代码重定向到商店页面并使用 clear-cart 查询字符串清空购物车,但我遇到了一个问题.当它重定向到商店页面时,购物车会被清除,但是当我尝试“添加到购物车”新产品时,它会刷新页面并再次清除购物车。这是因为 url 现在在其末尾包含查询字符串 www.my-site.com/shop/?clear-cart。由于我希望可以选择将多个项目添加到购物车,有没有一种方法可以在重定向时从 url 中删除查询字符串?或者对此有更好的解决方案吗?

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    if ( isset( $_GET['clear-cart'] ) ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}

清空购物车后,您可以调用 header 函数。

header("Location: www.mysite.com/shop");

尝试使用 template_redirect 钩子首先清空购物车并重定向到商店页面(删除查询字符串):

add_action( 'template_redirect', 'empty_cart_and_redirect' );
function empty_cart_and_redirect( $query ) {
    if ( isset( $_GET['clear-cart'] ) ) {
        // 1. Empty cart
        WC()->cart->empty_cart();
        
        // 2. Redirect to Shop page
        $redirect_url = wc_get_page_permalink( 'shop' );
        wp_redirect( $redirect_url );
        exit();
    }
}

代码进入您的活动子主题(活动主题)的 function.php 文件。它应该有效。


要重定向到 corner-store,请尝试改用:

$redirect_url = home_url( '/corner-store/' );