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

woocommerce_order_status_completed钩子触发仅返回订单ID无其他数据如何解决

问题产生原因
  • 若你是自行编写代码挂载woocommerce_order_status_completed钩子触发webhook:该钩子默认仅传递订单ID作为入参,如果你没有在回调逻辑中根据ID拉取完整订单对象,返回内容自然只会包含订单ID
  • 若你是通过WooCommerce后台自带的Webhook功能配置的钩子:通常是Webhook主题配置错误、有效载荷版本过低、或是关联的API账号没有订单查看权限,导致Payload被截断
解决方法

场景1:使用WooCommerce后台自带Webhook功能

  • 进入WooCommerce后台 → 设置 → 高级 → Webhook,点击对应钩子进入编辑页
  • 「主题」选项选择订单已完成,不要选择自定义钩子选项;「有效载荷版本」选择WP REST API集成 v3
  • 确认创建Webhook时关联的用户账号拥有view_shop_orders权限,推荐使用管理员权限账号生成Webhook
  • 保存配置后触发测试,即可收到包含商品、金额、收货人、支付信息等全量字段的订单数据

场景2:自定义代码实现Webhook触发

  • 在钩子回调函数中先通过传入的订单ID获取完整订单对象,再组装全量数据发送,参考代码如下:
add_action('woocommerce_order_status_completed', 'custom_push_order_to_webhook', 10, 1);
function custom_push_order_to_webhook($order_id) {
    // 校验订单ID有效性,获取订单对象
    $order = wc_get_order($order_id);
    if (empty($order)) return;

    // 获取订单全量原生数据
    $post_data = $order->get_data();

    // 此处替换为你的Webhook接收地址
    $target_url = 'https://你的webhook接收地址';

    // 发送请求
    wp_remote_post($target_url, [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => json_encode($post_data),
        'timeout' => 60,
    ]);
}
  • 如果需要传递订单自定义字段,可以在$post_data数组中自行追加对应的字段值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:57:03