中文用户按省市区加详细地址填,提交时提示街道地址格式不正确,把门牌号码挪到最前面反而能过。乍看像缓存或者权限的锅,追下去往往不是。

add_filter('woocommerce_get_country_locale', 'cn_locale');
wp option get woocommerce_default_country
# 地址字段按国家分支调整

追下去是这么回事:校验规则照着欧美地址写,要求门牌号在前并用空格分段,没考虑中文从大到小的书写顺序,正则一卡就把合法地址拦在门外。

「地址字段本地化」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

具体做法是,按用户所在的地区切换校验规则 不要全站一套;把地址拆成省市区和详细地址这两个独立字段;只做必填和长度校验 不做那么严格的格式匹配。

验收就看一点,中文地址能够原样提交成功 订单详情里面的地址完整可读。

作者 9823189