WooCommerce价格字段差异:_price、_sale_price与_regular_price的区别
WooCommerce 三个价格字段区别说明
各字段定义与使用场景
_regular_price
定义:商品的常规原价,对应后台商品编辑页「常规价格」输入框的填写值,是商品不参与促销时的基准售价。
使用场景:所有需要展示商品原价的场景都会调用该字段,比如商品详情页划掉的参考原价、促销活动价格对比基准、多规格商品价格区间计算基准等,该值不会自动变更,只能通过手动编辑、批量修改或插件调整。_sale_price
定义:商品的促销优惠价,对应后台「促销价格」输入框的填写值,空值代表当前未设置促销价格。
使用场景:仅作为商品促销阶段的优惠价格来源,需要搭配促销起止时间字段sale_price_dates_from、sale_price_dates_to校验生效状态,不会直接作为前端售价、结算价格的计算依据。_price
定义:WooCommerce 自动维护的动态生效价,也叫活跃价格,不需要商家手动填写,完全由系统基于规则自动更新。
使用场景:前端所有展示商品当前售价的位置、购物车价格计算、订单结算等核心价格调用场景均使用该字段,是WooCommerce判定商品当前实际售价的唯一标准。
字段关联逻辑
WooCommerce 每次保存商品、促销时间节点触发更新时,都会按照以下规则自动刷新_price的值:
- 首先校验是否有生效的促销活动:如果
_sale_price不为空,且要么没有设置促销起止时间、要么当前时间在设置的促销起止时间范围内,就将_price的值同步为_sale_price的数值 - 若没有生效的促销活动,直接将
_price的值同步为_regular_price的数值 - 如果是多规格的可变商品,
_price还会自动同步为所有规格生效价的最小值,用于商品列表页展示最低起售价
注意:手动修改
_price的值是无效的,只要商品触发保存动作,系统就会自动覆盖手动修改的数值,所有价格调整都应当操作_regular_price和_sale_price两个字段。
内容的提问来源于stack exchange,提问作者Javier L. Camacaro
相关产品推荐
相关产品推荐

