问题现象

客户反复提交结账,页面顶部提示请输入地址,但表单里的地址栏都填满了。

原因分析

结账字段被主题或插件改动,必填字段的 name 与后端校验不匹配,值没有提交上去。判断时先分清是 WooCommerce 结账校验 本身的配置问题,还是上游调用、运行环境带进来的差异;前者改配置就能收口,后者要沿着请求链路一层层往上找,处理顺序不能颠倒。先在出问题的机器上复现一次,把报错原文和发生时间记下来,再对着日志定位。

处理步骤

  1. 对比表单字段名与结账模板
  2. 恢复默认结账短代码
  3. 关闭改动字段的插件后复测

对应的命令或配置片段如下,可直接复制:

add_filter('woocommerce_checkout_fields', function ($f) {
  unset($f['billing']['billing_company']);
  return $f;
});

排查时把每一步的输出留下来,后面再遇到同类问题,对照日志就能判断是哪一层先出错的。改动前把原配置备份一份,出问题时能马上回退,比现场找原因省时间。

验证结果

正常填写后能进入支付步骤,不再重复提示地址为空。

作者 9823189