如何清除Woocommerce购物车

时间:2014-01-06 16:25:17

标签: e-commerce woocommerce cart

我想知道如何使用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(); 
    }
}

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

有什么想法吗?谢谢!

8 个答案:

答案 0 :(得分: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(); 
    }
}

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

答案 1 :(得分:12)

其更新版本为:

WC()->cart->empty_cart();

答案 2 :(得分:2)

试试这个。我希望它会对你有所帮助。

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

  if (strpos($_SERVER['REQUEST_URI'], '/checkout')  <  0 ) 
  {
         $woocommerce->cart->empty_cart();
  }
}

答案 3 :(得分:1)

以上所有代码都不适用于我的Wordpress安装(4.9.6)。所以,我更改了add_action并删除了变量请求并直接运行。

现在,我的Woocommerce插件会在用户退出结帐页面时清除产品,而不会出现任何重复错误。谢谢大家的帮助

add_action( 'woocommerce_add_cart_item_data', 'woocommerce_clear_cart_url' );

function woocommerce_clear_cart_url() {

    global $woocommerce;
    $woocommerce->cart->empty_cart();
} 

答案 4 :(得分:0)

如果您需要购物车页面上的空购物车按钮,您可以使用以下插件清除购物车

插件名称:WooCommerce的空购物车按钮 链接:https://wordpress.org/plugins/woo-empty-cart-button/

不需要任何设置只需激活插件。

答案 5 :(得分:0)

以上对我没有用,所以我需要一些不依赖于WordPress条件的东西:

/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ($_SERVER['REQUEST_URI'] === '/') { 
    $woocommerce->cart->empty_cart(); 
 }
}

答案 6 :(得分:0)

您可以简单地调用此WooCommerce核心功能:

wc_empty_cart()

谢谢

答案 7 :(得分:0)

以上代码均未在我的网站上运行。我在最新的WordPress版本5.4.1中对其进行了测试,以下功能可以完美运行!

/**
Clears WC Cart on Page Load
(Only when not on cart/checkout page)
*/

add_action( 'wp_head', 'wc_clear_cart' );
function wc_clear_cart() {
    if ( wc_get_page_id( 'cart' ) == get_the_ID() || wc_get_page_id( 'checkout' ) == get_the_ID() ) {
        return;
    }
    WC()->cart->empty_cart( true );
}