【问题标题】:How to clear a Woocommerce cart如何清除 Woocommerce 购物车
【发布时间】:2014-01-24 02:54:53
【问题描述】:

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

但我想知道如何在主页的页面加载时触发它(如果您可以指定确切的页面会很棒,但即使是主页也会很有用)

有什么想法吗?谢谢!

【问题讨论】:

    标签: e-commerce woocommerce cart


    【解决方案1】:

    这个的更新版本是:

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

    【讨论】:

      【解决方案2】:

      对于仅在首页上触发,您的函数需要如下所示:

      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

      【讨论】:

      • 这对我有用,但我不得不删除页面和变量检查并直接运行$woocommerce->cart->empty_cart();
      • 这是完整的答案,应标记为正确的解决方案。我只是用更新版本的WC()->cart->empty_cart(); 替换$woocommerce->cart->empty_cart();
      • @JoãoTeixeira,你是如何在购物车页面上添加清除所有按钮的?
      • @user9437856 lang-php add_action('woocommerce_after_cart_table', [$this, 'add_empty_cart_button_to_cart']); public function add_empty_cart_button_to_cart() { ob_start(); ?> <a href="<?php echo wc_get_cart_url(); ?>?cart_action=empty" onclick="return confirm('Are you sure you want to remove all items from your cart?'">Empty Cart/a> <?php echo ob_get_clean(); }
      【解决方案3】:

      以上代码均不适用于我的 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();
      } 
      

      【讨论】:

        【解决方案4】:

        您可以简单地调用这个 WooCommerce 核心函数:

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

        清除购物车会话:

        WC()->session->set('cart', array());
        

        谢谢

        【讨论】:

        • 要清除会话,您只需将true 参数添加到empty_cart( true ) 方法。
        【解决方案5】:

        以上代码均不适用于我的网站。我在最新的 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 );
        }
        

        【讨论】:

          【解决方案6】:

          试试这个。希望对你有帮助。

          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();
            }
          }
          

          【讨论】:

            【解决方案7】:

            以上对我没有用,所以我需要一些不依赖 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(); 
             }
            }
            

            【讨论】:

              【解决方案8】:

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

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

              无需设置,只需激活插件即可。

              【讨论】:

                猜你喜欢
                • 2019-03-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-08-29
                相关资源
                最近更新 更多