日本站商品价格显示成 ¥1200.00,客户要求整数,同一套模板给美元站显示 $12.00 又是对的。日志里能对上时间点,这种反而好排。
模板自己拼了 number_format($price, 2),没读货币的小数位配置。JPY 在 WooCommerce 里默认零位小数,被这段写死的格式化覆盖掉了。这一点先确认清楚,后面就不用反复试。
echo wc_price($price, array('decimals' => wc_get_price_decimals()));
// JPY 应输出 ¥1,200
「日元价格小数位」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
处理上按这个顺序:价格统一走 wc_price,别自己 number_format;检查 woocommerce_price_num_decimals 过滤器有没有被写死成 2;切到日元看列表、详情、购物车三处显示。
结果对不对很好判断,日元站价格显示 ¥1,200,美元站仍是 $12.00,两站都带千分位。
