You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce结账页订单详情加载转圈卡住 无wc-ajax请求排查求助

WooCommerce结账页订单详情加载异常问题
  • 问题页面:https://ellasbubbles.com/checkout/
  • 复现路径:先在https://ellasbubbles.com/walk-in-tub-accessory-pricing/ 将商品加入购物车,再跳转至结账页即可复现
  • 已尝试操作:查阅30余篇相关帖子和教程,尝试过禁用所有插件、重置.htaccess、重置functions.php、调高内存限制、修改index.html为php等方案,均未解决
  • 已发现异常点:
    • XHR请求中无?wc-ajax=checkout参数的请求记录
    • 接口https://ellasbubbles.com/?wc-ajax=update_order_review返回值为-1
  • 临时兜底方案(可生效但不推荐):
/* Fix issues with jquery overlay blocking checkout button */
.woocommerce .blockUI.blockOverlay {
  position: relative!important;
  display: none!important;
}
  • 核心疑问:问题的根本诱因是什么,有无更合理的解决方案?

根本原因

你遇到的问题核心是WooCommerce的update_order_reviewAJAX接口请求失败,默认加载遮罩会一直停留等待请求返回,你通过CSS强制隐藏遮罩属于绕过问题而非解决问题。接口返回-1是WooCommerce AJAX接口的典型错误码,常见触发原因有3类:

  1. 防篡改令牌(nonce)失效:WooCommerce结账页会生成有效期12-24小时的nonce用于接口校验,如果你的结账页被做了静态缓存(插件缓存、服务器缓存、CDN缓存),缓存过期后nonce失效,接口校验不通过直接返回-1,订单更新请求终止。
  2. AJAX回调异常:如果有自定义代码误删了update_order_review对应的动作钩子,或者主题/插件篡改了WooCommerce的AJAX路由规则,也会导致接口无正常返回。
  3. 会话校验失败:用户访问结账页时未生成有效的购物车会话,接口判断购物车不存在也会返回-1。

更合理的解决方案

1. 优先排查缓存规则

立刻将结账页、购物车页、我的账户页从所有缓存策略(缓存插件、服务器缓存、CDN缓存)中排除,这类动态页面绝对不能做静态缓存。清空所有缓存后重新测试,80%以上的同类问题都可以通过这个操作解决。

2. 校验前端参数是否正常

打开结账页的浏览器开发者工具,在控制台输入woocommerce_params.update_order_review_nonce,看是否有正常的字符串返回。如果返回未定义,检查主题header.php是否遗漏了wp_head()调用,或者是否有插件移除了WooCommerce的前端全局参数注入。

3. 校验AJAX回调是否正常

检查functions.php或者自定义插件中,是否有类似remove_action( 'wc_ajax_update_order_review', 'WC_AJAX::update_order_review' )的代码,如果有直接删除即可。

4. 还原不必要的自定义修改

把之前修改index.html为php的改动全部还原,重新保存WordPress后台的固定链接设置,生成默认的.htaccess规则,避免伪静态规则异常拦截AJAX请求。

内容的提问来源于stack exchange,提问作者user77619

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:03