You need to enable JavaScript to run this app. WooCommerce购物车及结账页如何为商品小计展示促销价格区间
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce购物车及结账页如何为商品小计展示促销价格区间

问题根因

原自定义代码存在两个场景逻辑混用的缺陷:

  • 同一处理逻辑同时挂载在「购物车单价展示」和「购物车小计展示」两个完全独立的钩子上
  • 触发小计钩子时,代码会直接丢弃钩子传入的、已经按购买数量计算完成的合计值,转而输出单份商品的价格HTML,自然无法展示乘算后的总额。

调整思路

针对两个钩子的业务场景做逻辑拆分,不需要修改原有cart.php、checkout.php模板,直接通过钩子调整输出即可:

  • 单价列:保持原生逻辑,输出单份商品带划线促销价的标准HTML,不需要做数量乘算
  • 小计列:分别计算对应数量下的「原价合计额」和「促销后实际合计额」,严格按照WooCommerce原生的划线价HTML结构拼接,保证前端样式和系统默认逻辑完全统一,同时自动适配购买数量的乘算。

调整后的可直接使用的代码

/**
 * 购物车/结账页展示带划线促销价的单价与小计
 */
// 处理商品单价列的展示(单份商品价格,无数量乘算)
add_filter( 'woocommerce_cart_item_price', 'my_custom_show_sale_price', 10, 3 );
function my_custom_show_sale_price( $old_display, $cart_item, $cart_item_key ) {
    $product = $cart_item['data'];
    // 仅对促销商品替换为原生带划线的价格HTML
    if ( $product && $product->is_on_sale() ) {
        return $product->get_price_html();
    }
    // 非促销商品保持原有展示,不做修改
    return $old_display;
}

// 处理商品小计列的展示(按购买数量计算合计值)
add_filter( 'woocommerce_cart_item_subtotal', 'my_custom_show_sale_subtotal', 10, 3 );
function my_custom_show_sale_subtotal( $old_subtotal, $cart_item, $cart_item_key ) {
    $product = $cart_item['data'];
    $quantity = $cart_item['quantity'];

    // 非促销商品直接返回系统原生计算好的小计值,不做额外处理
    if ( ! $product || ! $product->is_on_sale() ) {
        return $old_subtotal;
    }

    // 计算按原价统计的合计金额:自动适配货币格式、税费规则、价格精度
    $regular_total = WC()->cart->get_product_subtotal( 
        $product, 
        $quantity, 
        [ 'price' => $product->get_regular_price() ] 
    );
    // 获取实际按促销价统计的合计金额,和系统默认计算逻辑完全一致
    $sale_total = WC()->cart->get_product_subtotal( $product, $quantity );

    // 复用WooCommerce原生划线价的HTML结构,保证前端样式统一
    return sprintf(
        '<del>%s</del> <ins>%s</ins>',
        $regular_total,
        $sale_total
    );
}

代码特性说明

  • 完全复用WooCommerce内置的价格计算方法,自动适配后台设置的货币符号、价格精度、税费显示规则、千分位格式,不会出现样式或计算错误
  • 仅对处于促销状态的商品展示划线效果,非促销商品完全保持系统原生展示逻辑,不会生成冗余的HTML标签
  • 代码通过系统原生钩子实现,不需要修改核心模板文件,后续升级WooCommerce版本时不会出现代码失效、模板被覆盖的问题
  • 自动兼容简单商品、商品变体场景,不需要为可变商品单独做逻辑适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 15:06:04