You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce免运费计数器适配折扣码功能改造求助

WooCommerce免运费计数器折扣码适配修复

问题描述

现有免运费计数器逻辑基于购物车未折扣小计(WC()->cart->subtotal)判断是否满足免运费门槛,导致用户使用折扣码后,实际支付金额低于门槛时无法触发差额提示。例如:购物车原金额164.68pln满足免运费,使用15%折扣码后实际金额139.98pln,此时计数器未显示需补充的金额。

修复方案

将判断逻辑改为基于应用折扣后的商品小计,替换原有代码中获取当前金额的方式:

修改后的完整代码

// 免运费金额提示(未达标时)
add_action( 'woocommerce_before_cart', 'ml_free_shipping_cart_notice' );
  
function ml_free_shipping_cart_notice() {
   $min_amount = 150; // 修改为你的免运费门槛金额
   
   // 计算应用折扣后的商品小计
   $current = WC()->cart->subtotal - WC()->cart->discount_total;
  
   if ( $current < $min_amount ) {
      $added_text = 'Do darmowej przesyłki brakuje jeszcze ' . wc_price( $min_amount - $current ) . '!';
      $return_to = wc_get_page_permalink( 'shop' );
      $notice = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( $return_to ), 'Kontynuuj zakupy', $added_text );
      wc_print_notice( $notice, 'notice' );
   }
}

// 免运费达标提示
add_action( 'woocommerce_before_cart', 'free_shipping_info' );
  
function free_shipping_info() {
   $min_amount = 150; // 修改为你的免运费门槛金额
   
   // 计算应用折扣后的商品小计
   $current = WC()->cart->subtotal - WC()->cart->discount_total;
  
   if ( $current >= $min_amount ) {
      $added_text = 'Przekroczyłeś 150zł! Twoje zamówienie wyślemy za darmo! :) Wybierz dowolny sposób wysyłki!';
      $notice = sprintf( $added_text );
      wc_print_notice( $notice, 'notice' );
   }
}

关键修改说明

将原有代码中的:

$current = WC()->cart->subtotal;

替换为:

$current = WC()->cart->subtotal - WC()->cart->discount_total;
  • WC()->cart->subtotal:未应用任何折扣的商品总金额
  • WC()->cart->discount_total:当前购物车的总折扣金额(包括优惠券、促销等)
  • 计算后得到的$current为用户实际需要支付的商品金额,确保判断逻辑与用户最终支付金额一致。

内容的提问来源于stack exchange,提问作者mwlandof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:40:23