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

如何在自定义模板中显示WooCommerce带折扣的产品价格及原价

修改WooCommerce产品模板以显示折扣价和原价

嘿,刚好我对WooCommerce的模板修改很熟,我来帮你搞定这个显示折扣价和原价的需求~

你原来的代码只输出了当前生效的价格,要同时展示原价(带删除线)和折扣价,我们需要替换掉价格区域的代码,利用WooCommerce自带的函数来处理,这样还能兼容各种产品类型和促销设置。

直接把你原来的<div class="price">...</div>部分替换成下面这段代码就行:

<div class="price">
    <?php if ( $product->is_on_sale() ) : ?>
        <!-- 显示划掉的原价 -->
        <del class="woocommerce-Price-amount amount">
            <?php echo wc_price( $product->get_regular_price() ); ?>
        </del>
        <!-- 显示折扣价 -->
        <ins class="woocommerce-Price-amount amount">
            <?php echo wc_price( $product->get_sale_price() ); ?>
        </ins>
    <?php else : ?>
        <!-- 没有促销时显示正常价格 -->
        <span class="woocommerce-Price-amount amount">
            <?php echo wc_price( $product->get_regular_price() ); ?>
        </span>
    <?php endif; ?>
</div>

给你拆解下这段代码的逻辑:

  • 先用$product->is_on_sale()判断当前产品是否处于促销状态
  • 如果是促销,就通过<del>标签展示划掉的原价(调用get_regular_price()获取),再用<ins>标签展示折扣价(调用get_sale_price()获取)
  • 如果没有促销,就正常显示原价
  • 用wc_price()函数格式化价格,它会自动读取你WooCommerce后台设置的货币符号、小数位数等,不用硬写€,更灵活

这里为什么不用你原来的get_price()呢?因为get_price()返回的是当前用户看到的最终价格(促销时是折扣价,非促销时是原价),没办法同时拿到原价和折扣价,所以我们要分别调用专门的价格函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:07:47