如何在WooCommerce购物车中显示划掉的原价与促销小计?
WooCommerce购物车不显示划掉原价及促销小计的解决建议
1. 确认产品促销价设置
首先确保你的产品已经设置了销售价(Sale Price),只有同时填写常规价(Regular Price)和销售价的产品,WooCommerce才会生成划掉的原价样式。仅填写常规价的商品不会触发促销价格显示逻辑。
2. 替换为产品原生价格HTML输出
你当前使用的get_product_price和get_product_subtotal方法不会自动输出带划掉原价的HTML结构,建议直接调用产品的原生方法来生成符合要求的价格展示:
单个商品价格(含划掉原价)
<?php echo $_product->get_price_html(); // 自动输出「划掉的常规价 + 促销价」的组合样式 ?>
促销商品小计(含划掉原价小计)
WooCommerce默认小计函数不会主动输出划掉的原价小计,需要手动构建结构:
<?php if ( $_product->is_on_sale() ) { // 计算原价小计 $regular_subtotal = wc_price( $_product->get_regular_price() * $cart_item['quantity'] ); // 计算促销小计 $sale_subtotal = wc_price( $_product->get_sale_price() * $cart_item['quantity'] ); // 输出带划掉样式的小计 echo '<del>' . $regular_subtotal . '</del> <ins>' . $sale_subtotal . '</ins>'; } else { // 非促销商品直接输出默认小计 echo WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ); } ?>
3. 检查主题模板覆盖
如果你的主题自定义了WooCommerce购物车模板(路径通常为your-theme/woocommerce/cart/cart.php或your-theme/woocommerce/cart/cart-item.php),可能模板中移除了价格样式的输出逻辑。可以临时切换到WooCommerce默认主题(如Storefront)测试:
- 若切换后显示正常,说明是主题模板的问题,需要参照默认模板的价格输出逻辑修改主题文件。
4. 排查插件冲突
禁用所有非WooCommerce核心的插件,再逐个启用排查,确认是否有价格类插件(如动态定价、折扣插件)修改了WooCommerce的价格输出钩子,导致划掉的原价无法显示。
5. 确认钩子未被篡改
你使用的woocommerce_cart_item_price和woocommerce_cart_item_subtotal过滤器可能被其他代码修改,导致默认样式丢失。可以添加调试代码查看钩子的回调情况:
<?php // 打印当前钩子的所有回调函数,排查是否有未知修改 var_dump( $wp_filter['woocommerce_cart_item_price'] ); ?>
若发现异常回调,定位对应代码并调整。
内容的提问来源于stack exchange,提问作者Brendan Fredrich
相关产品推荐
相关产品推荐

