WooCommerce购物车小计显示原价问题求助(Hook代码异常)
WooCommerce购物车小计显示原价总和问题修复
你的代码逻辑存在核心问题:遍历购物车商品时,每次循环都直接把$subtotal替换为当前商品的原价小计,循环结束后只会保留最后一件商品的价格,无法计算所有商品的原价总和。
修复后的代码如下:
function filter_woocommerce_cart_subtotal( $subtotal, $compound, $cart ) { // 初始化原价总和变量 $regular_total = 0; // 遍历购物车商品,累加所有商品的原价×数量 foreach ( $cart->get_cart() as $cart_item ) { $regular_total += $cart_item['data']->get_regular_price() * $cart_item['quantity']; } // 格式化总价后返回 return wc_price( $regular_total ); } add_filter( 'woocommerce_cart_subtotal', 'filter_woocommerce_cart_subtotal', 10, 3 );
关键改动说明
- 新增
$regular_total变量专门用于累加总金额,避免循环覆盖问题 - 直接使用钩子传入的
$cart参数(无需额外调用WC()->cart),代码更规范 - 用
+=运算符累加每个商品的原价与数量的乘积,最后统一格式化价格输出
内容的提问来源于stack exchange,提问作者social.reza
相关产品推荐
相关产品推荐

