woocommerce购物车页面上的空购物车按钮不能正常工作



我用这个代码在我的woocommerce购物车页面上创建一个按钮(在更新购物车按钮附近):

add_action( 'woocommerce_cart_actions', 'woocommerce_empty_cart_button' );
function woocommerce_empty_cart_button() {
echo '<a href="' . esc_url( add_query_arg( 'empty_cart', 'yes' ) ) . '" class="button" title="' . esc_attr( 'Empty Cart', 'woocommerce' ) . '">' . esc_html( 'Empty cart', 'woocommerce' ) . '</a>';
}

add_action( 'wp_loaded', 'woocommerce_empty_cart_action', 20 );
function woocommerce_empty_cart_action() {
if ( isset( $_GET['empty_cart'] ) && 'yes' === esc_html( $_GET['empty_cart'] ) ) {
WC()->cart->empty_cart();

$referer  = wp_get_referer() ? esc_url( remove_query_arg( 'empty_cart' ) ) : wc_get_cart_url();
wp_safe_redirect( $referer );
}
}

问题是它只有点击两次才能起作用。我认为问题可能是我使用这个链接将产品添加到购物车:

/cart/?add-to-cart=25366

你知道怎么解决这个问题吗?

问题出在这一行:

$referer  = wp_get_referer() ? esc_url( remove_query_arg( 'empty_cart' ) ) : wc_get_cart_url();

wp_get_referer()函数返回当前页的引用。基本上就是把你带到当前页面的链接。

更多信息:https://developer.wordpress.org/reference/functions/wp_get_referer/

如果您之前添加了一个产品,在点击空购物车之后按钮,您将被重定向到将产品添加到购物车的链接。

你可以这样解决:

// adds the button to the cart page
add_action( 'woocommerce_cart_actions', 'woocommerce_empty_cart_button' );
function woocommerce_empty_cart_button() {
echo '<a href="' . esc_url( add_query_arg( 'empty_cart', 'yes' ) ) . '" class="button" title="' . esc_attr( 'Empty Cart', 'woocommerce' ) . '">' . esc_html( 'Empty cart', 'woocommerce' ) . '</a>';
}
// empty the cart and refresh the page (redirects to the cart page)
add_action( 'wp_loaded', 'woocommerce_empty_cart_action', 20 );
function woocommerce_empty_cart_action() {
if ( isset( $_GET['empty_cart'] ) && 'yes' === esc_html( $_GET['empty_cart'] ) ) {
WC()->cart->empty_cart();

$referer = wc_get_cart_url();
wp_safe_redirect( $referer );
}
}

代码已经过测试并正常工作。将其添加到活动主题的functions.php.

最新更新