WooCommerce 和 Autoship Cloud - 按数量限制自动发货选项

问题描述 投票:0回答:1

这是一个非常具体的问题,但我们在 WooCommerce 网站上安装了 Autoship Cloud 插件,因此我们可以提供一次性购买和每月自动发货选项。我们的客户只有 1 种可自动发货的产品,他们希望限制客户一次只能自动发货 6 种。

我不太精通编码,但我已经完成了 99% 的工作,在我的functions.php中使用以下代码片段:

add_action( 'woocommerce_before_cart', 'custom_total_item_quantity_message' );
function custom_total_item_quantity_message() {
    $max_count   = 6;
    $product_id = 275;
   $in_cart = false;
  
   foreach( WC()->cart->get_cart() as $cart_item ) {
      $product_in_cart = $cart_item['product_id'];
      if ( $product_in_cart === $product_id ) $in_cart = true;
            $item = $cart_item['data'];

        if(!empty($item)) {
            $quantity = $cart_item['quantity'];
        }
   }

    if( is_cart() && $in_cart && $quantity > $max_count ){
        echo '<div class="woocommerce-info">';
        printf( __("<style>.autoship-yes, .autoship-schedule-options .autoship-frequency.active{display: none !important;}</style>Sorry, Autoship is only available for 6 bottles or less.", "woocommerce"), $max_count - $quantity );
         wc_enqueue_js( "
         $('div.woocommerce').on('click', 'input.qty', function(){
          $('.autoship-no-radio').prop('checked', true).trigger('click');
        });
        $(document).ready(function() {
          $('.autoship-no-radio').prop('checked', true).trigger('click');
        });
      " );
        echo '</div>';
    }
}

基本上,代码的作用是隐藏“自动发货”单选按钮,并在将超过 6 个特定产品(产品 ID=275)添加到购物车时自动选择“一次性购买”单选按钮。当有人从一开始就向购物车添加超过 6 个商品时, $(document).ready(function() 脚本会正确触发,但 $('div.woocommerce').on('click', 'input.qty' ,如果添加到购物车的数量少于 6 个,则 function() 脚本不起作用,然后用户更新数量。

当代码只侦听购物车中总共 6 件商品时,代码工作得很好,但是在我添加这部分之后:

    $product_id = 275;
   $in_cart = false;
  
   foreach( WC()->cart->get_cart() as $cart_item ) {
      $product_in_cart = $cart_item['product_id'];
      if ( $product_in_cart === $product_id ) $in_cart = true;
            $item = $cart_item['data'];

        if(!empty($item)) {
            $quantity = $cart_item['quantity'];
        }
   }

因此它仅适用于该特定产品,它停止工作。

为了准确显示发生的情况,它适用于购物车中最多 6 件商品:

但是,一旦您将数量勾选到 7,函数本身就可以正常工作,但 $('div.woocommerce').on('click', 'input.qty', function() 脚本不会触发:

相比之下,当从一开始就将超过 6 个产品添加到购物车时,整个事情就会按预期进行:

可能还值得一提的是,我添加了一个功能,可以在数量或自动发货单选按钮更新时自动更新购物车:

add_action( 'wp_footer', 'bbloomer_cart_refresh_update_qty' ); 
 
function bbloomer_cart_refresh_update_qty() {
   if ( is_cart() || ( is_cart() && is_checkout() ) ) {
      wc_enqueue_js( "
         $('div.woocommerce').on('change', 'input, select', function(){
            $('[name=\'update_cart\']').trigger('click');
         });
      " );
   }
}
wordpress woocommerce
1个回答
0
投票

你能解决这个问题吗?我们遇到了完全相同的问题。我们试图限制用户可以购买的数量(仅适用于自动发货订单),同时允许他们一次性购买他们想要的任何数量。任何信息都会非常有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.