如何清除Woocommerce购物车

use*_*288 15 cart e-commerce woocommerce

我想知道如何使用woocommerce清除页面加载中购物车的内容.

我通过将其添加到functions.php来了解如何添加清除购物车按钮

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;

    if ( isset( $_GET['empty-cart'] ) ) {
        $woocommerce->cart->empty_cart(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道如何在主页的页面加载中触发这个(如果你可以指定那个很棒的确切页面,但即使主页也很有用)

有任何想法吗?谢谢!

小智 16

要仅在首页触发,您的功能需要如下所示:

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;

    if ( is_front_page() && isset( $_GET['empty-cart'] ) ) { 
        $woocommerce->cart->empty_cart(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

函数is_front_page()仅在wordpress站点的首页上返回true.此外,您可能会检测到具有函数is_page()的任何其他页面,您可以在其中传递任何页面标题,ID或slug


Kul*_*raj 16

更新版本将是:

WC()->cart->empty_cart();
Run Code Online (Sandbox Code Playgroud)


小智 7

上述代码在我安装的 WordPress (4.9.6) 上均不起作用。于是,我改了add_action,去掉了变量request,直接去运行了。

现在,一旦用户退出结帐页面,我的 Woocommerce 插件就会将产品清除到购物车,而不会出现任何重复错误。感谢大家的帮助

add_action( 'woocommerce_add_cart_item_data', 'woocommerce_clear_cart_url' );

function woocommerce_clear_cart_url() {

    global $woocommerce;
    $woocommerce->cart->empty_cart();
} 
Run Code Online (Sandbox Code Playgroud)