代码之家  ›  专栏  ›  技术社区  ›  Taylor

如果ajax上的购物车不为空,则隐藏自定义按钮在Woocommerce中添加到购物车

  •  0
  • Taylor  · 技术社区  · 6 年前

    我有一个功能,可以检查WooCommerce购物车是否为空,如果为空,则在链接到我的店铺页面的页面标题中添加一个按钮。然而,此代码仅在页面加载时有效,但在通过AJAX添加到购物车后不会更新(并删除按钮)。如何检测商品是否已添加到购物车?

    function shop_button_when_empty_cart() {
    
         if ( WC()->cart->get_cart_contents_count() == 0 ) { ?>
             <a href="/shop"><button>Your cart is empty, go to shop</button></a>
         <?php
         }
    }
    add_action( 'storefront_header', 'shop_button_when_empty_cart', 40 );
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   LoicTheAztec    6 年前

    基于 on this existing answer 以下是在Woocommerce归档页面中实现此功能的正确方法,其中在“添加到购物车”按钮上启用了Ajax。在ajax add to cart上,按钮将隐藏:

    add_action( 'storefront_header', 'shop_button_when_empty_cart', 40 );
    function shop_button_when_empty_cart() {
    
        $style = WC()->cart->get_cart_contents_count() > 0 ? ' style="display: none;"' : '';
        $class = 'class="button go-shop"';
    
        echo '<a href="/shop" '.$class.$style.'>Your cart is empty, go to shop</a>';
    
        if( is_shop() || is_product_category() || is_product_tag() ):
        ?>
        <script type="text/javascript">
            // Ready state
            (function($){
                $( document.body ).on( 'added_to_cart', function(){
                    $('a.button.go-shop').hide();
                    console.log('action');
                });
            })(jQuery);
        </script>
        <?php
        endif;
    }
    

    代码进入功能。活动子主题(或活动主题)的php文件。测试和工作。

    相关:

        2
  •  0
  •   Sajjad Hossain Sagor    6 年前

    如果您使用的是ajax,那么就必须使用ajax处理程序。Woocommerce有一个名为 added_to_cart 在这里,您可以在调用此事件时插入代码,

    $(document).on('added_to_cart',function(){
      //here goes your button add code
    }
    
    $(document).on( 'added_to_cart removed_from_cart', function(){
     //here goes if cart item is removed
    }