在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
相关产品推荐
相关产品推荐

