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

在WooCommerce购物车与结账页计算总节省金额

WooCommerce 购物车/结账页面总优惠金额统计代码

下面是适配购物车和结账页面的代码,会遍历所有商品,统计有折扣商品的总节省金额,并在订单总额区域下方展示:

// 购物车页面显示总优惠金额
add_action( 'woocommerce_cart_totals_after_order_total', 'display_cart_total_saving_amount', 10 );
// 结账页面显示总优惠金额
add_action( 'woocommerce_review_order_after_order_total', 'display_cart_total_saving_amount', 10 );

function display_cart_total_saving_amount() {
    $total_saved = 0;
    $tax_display = get_option('woocommerce_tax_display_shop');

    // 遍历购物车所有商品
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        
        // 仅处理在售商品
        if ( $product->is_on_sale() ) {
            $args = array( 'price' => $product->get_regular_price() );
            
            // 根据含税设置计算原价和现价
            if ( 'incl' === $tax_display ) {
                $regular_price = wc_get_price_including_tax( $product, $args );
                $active_price  = wc_get_price_including_tax( $product );
            } else {
                $regular_price = wc_get_price_excluding_tax( $product, $args );
                $active_price  = wc_get_price_excluding_tax( $product );
            }
            
            // 单个商品的节省金额 × 购买数量,累加到总节省
            $item_saved = ( $regular_price - $active_price ) * $cart_item['quantity'];
            $total_saved += $item_saved;
        }
    }

    // 只有存在优惠时才显示
    if ( $total_saved > 0 ) {
        printf( '<p id="total_saving_price" style="margin-top:10px;">%s %s</p>', __('本次购买总优惠:'), wc_price( $total_saved ) );
    }
}

代码说明:

  • 同时适配购物车和结账页面,通过两个钩子将内容插入到订单总额下方
  • 遍历购物车所有商品,仅统计**在售(有折扣)**的商品
  • 遵循WooCommerce后台设置的「商品价格显示含税/不含税」规则计算金额
  • 计算单个商品的优惠额后乘以购买数量,累加得到总优惠金额
  • 仅当总优惠金额大于0时才显示,避免空内容

将这段代码添加到你的主题functions.php文件或自定义插件中即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:20:13