我正在使用此代码在我的 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
知道如何解决这个问题吗?
答案 0 :(得分:0)
问题出在这一行:
$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。