
本文详解如何在 WooCommerce 中正确显示带千位分隔符(如 1,200)的价格,避免仅输出无格式数字(如 1200),涵盖后台设置、代码层格式化及兼容性注意事项。
本文详解如何在 woocommerce 中正确显示带千位分隔符(如 `1,200`)的价格,避免仅输出无格式数字(如 `1200`),涵盖后台设置、代码层格式化及兼容性注意事项。
在 WooCommerce 中,价格默认使用 wc_price() 函数进行格式化输出——该函数会自动应用站点配置的货币符号、小数位数、小数点(decimal point)和千位分隔符(thousands separator)。但你在模板循环中直接调用 $product->get_regular_price() 获取的是原始浮点数值(如 1200.0),未经过任何本地化格式化处理,因此不会自动添加逗号分隔符或货币单位。
你当前的代码片段中:
$price = $product->get_regular_price();
if (!empty($price)){
$price .= ' kr exkl. moms';
}这仅做了字符串拼接,完全绕过了 WooCommerce 的价格格式化机制,导致 1200 被原样输出,缺失千位分隔符。
✅ 推荐解决方案:始终使用 wc_price() 格式化价格
将上述两行替换为:
$price = wc_price($product->get_regular_price()) . ' kr exkl. moms';
wc_price() 会根据 WooCommerce 后台设置自动应用:
- 千位分隔符(如 , 或 ` ` 空格)
- 小数分隔符(如 . 或 ,)
- 小数位数(如 0 位 → 1,200;2 位 → 1,200.00)
- 货币符号位置与样式(本例中你手动追加了文本,故需确保 wc_price() 不重复输出符号)
? 验证并配置后台价格格式:
进入 WordPress 后台 → WooCommerce → 设置 → 通用 → 货币选项,检查以下关键设置:
- 小数位数:建议设为 0(若无需小数)
- 千位分隔符:设为 ,(英文逗号)
- 小数点分隔符:设为 .(英文句点)
- 货币位置:可选“左侧”“右侧”等,不影响千位符显示
⚠️ 注意事项:
- 若主题或插件通过 woocommerce_price_html 等钩子修改了价格 HTML,可能覆盖默认行为,请排查冲突;
- 使用 wc_price() 时传入的是数值型价格(如 floatval($product->get_regular_price())),而非字符串,否则可能触发警告;
- 如需自定义格式(例如强制瑞典语风格 1 200),可通过 number_format_i18n() + get_woocommerce_currency_decimals() 组合实现,但通常不建议绕过 wc_price(),因其已内置多语言与 RTL 支持;
- 在 Twig 模板(如 card.phtml)中,确保 $price 变量未被二次 esc_html() 或 strip_tags() 过滤掉 HTML 实体(wc_price() 返回含 的安全 HTML,若需纯文本请改用 wc_format_price() 或 number_format())。
? 总结:
不要手动拼接价格字符串,而是信任 WooCommerce 内置的国际化格式化函数。一行 wc_price($price) 即可解决千位分隔符缺失问题,并保障多语言、多货币场景下的健壮性。










