Woocommerce:如果购物车包含此类别,则更改购物车总数

我已经尝试解决这个问题有一段时间了,但似乎无法弄清楚为什么这只能以一种方式起作用。

目标:当“服务”类别在购物车中时,默认购物车总押金为 50 美元,如果购物车中没有“服务”类别的产品,则正常结帐。

问题:woocommerce 通知工作正常,但购物车没有改变。我试图从 if 语句而不是 woocommerce 通知中调用 change_calculcated_total 函数,但是无论购物车中的类别是什么,该函数始终运行...

是结构错误吗?

add_action( 'woocommerce_before_cart','bbloomer_check_category_in_cart' );
  
$cat_in_cart = false;    // Set $cat_in_cart to false

function bbloomer_check_category_in_cart() {

    // Loop through all products in the Cart
   foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
 
      // If Cart has category "services",set $cat_in_cart to true
      if ( has_term( 'services','product_cat',$cart_item['product_id'] ) ) {
         $cat_in_cart = true;
         break;
      }
   }
 
   // Do something if category "services" is in the Cart
   if ( $cat_in_cart ) {
 
      // For example,print a notice
            wc_print_notice( 'Services selected,Only $50 deposit is required.','notice' );
   
 
   }
 
}

//change cart total.

  
function change_calculated_total( $total,$cart ) {
    if ( $cat_in_cart ){
    return 50;
    }else{
            return $total;
        }
}

add_filter( 'woocommerce_calculated_total','change_calculated_total',10,2 );













ppppp12345 回答:Woocommerce:如果购物车包含此类别,则更改购物车总数

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/262.html

大家都在问