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

WooCommerce自定义webhook触发时请求body为空问题排查

当webhook触发时,我在接收端发现请求的body为空。随后我启用了WP_DEBUG,重新发起一次API调用后查看日志文件(路径:WooCommerce >> 状态 >> 日志 >> 对应日期的日志文件),确认body确实为空,因此问题并非出在数据传输环节。

我找到了代码中触发webhook的位置,代码如下:

do_action( 'my_custom_webhook', $order->id, [], $order );

我将代码修改为:

error_log( $order );
do_action( 'my_custom_webhook', $order->id, [], $order );

打印后发现$order变量并非空值,情况十分奇怪。

已执行的排查步骤

  • 确认webhook定义正确
    我花费了大量时间核查webhook配置,确认是否存在设置错误,或者用到了已废弃的旧版本代码。

  • 排查错误日志
    我多次翻查错误日志,推测可能是代码错误导致API调用发送前就出现问题,但该推测并不合理,因为代码错误大概率会直接阻断API调用触发。

  • 排查webhook自动停用问题
    我对接的API在接收空body时会返回500错误,因此webhook会自动停用。每次尝试重新激活时都会返回以下两类错误:

    • 错误:投递URL返回响应码:500
    • 错误:无法访问投递URL:cURL error 28: Operation timed out after 5001 milliseconds with 0 bytes received。很长一段时间我都认为该错误是问题核心。

但我无法修改对接的API,没有合适的方案绕过该问题。最终我发现虽然触发了上述错误,但webhook实际已激活并可以正常运行,因此我直接忽略该错误继续排查。

  • 权限排查
    由于我收到了woocommerce_rest_cannot_view错误,我也曾推测问题与权限配置相关。

系统信息

  • WordPress版本:5.8.1
  • WooCommerce版本:4.9.3
  • 站点为基于Trellis、Bedrock和Sage搭建的自定义站点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:06