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

WooCommerce订单状态变更钩子失效:寻求全场景触发钩子

WooCommerce订单状态变更钩子兼容所有场景的解决方案

问题描述

我正在开发一款订单状态变更时发送WhatsApp消息的插件,代码如下:

add_action("woocommerce_order_status_changed", "order_status_wapp", 10, 3); 
function order_status_wapp($order_id, $old_status, $new_status){  
 if( $new_status == "processing" && carbon_get_theme_option( 'show_processing' )) {       
    require("incl/apicall.php");  
    $message = carbon_get_theme_option( 'processing_message' );       
    require("incl/message_attr.php");            
}

该代码在订单列表操作区修改状态时可正常运行,但在订单详情页修改或通过编程方式修改状态时无效果,需要找到能在任何状态变更场景下触发的钩子。

解决方案

核心原因

woocommerce_order_status_changed钩子的触发范围有限,仅在订单列表的批量操作/快速编辑修改状态时触发,无法覆盖订单详情页手动修改、通过WC_Order->update_status()编程修改的场景。

通用钩子推荐

使用**woocommerce_order_status_updated**钩子,它是WooCommerce中所有订单状态变更场景都会触发的底层钩子,支持以下所有场景:

  • 订单列表快速编辑/批量修改状态
  • 订单详情页修改状态
  • 代码调用update_status()方法修改状态
  • 支付网关自动更新订单状态

修改后的代码示例

add_action("woocommerce_order_status_updated", "order_status_wapp", 10, 4); 
function order_status_wapp($order_id, $old_status, $new_status, $order){  
    // 仅在切换到processing状态且开启对应设置时执行逻辑
    if( $new_status == "processing" && carbon_get_theme_option( 'show_processing' )) {       
        require("incl/apicall.php");  
        $message = carbon_get_theme_option( 'processing_message' );       
        require("incl/message_attr.php");            
    }
}

注意:该钩子的第四个参数是$order对象,若无需使用可忽略,但必须保证钩子注册时的参数数量(10,4)与函数接收的参数数量匹配。

备选方案

如果仅需要监听特定状态的变更(比如仅监听切换到processing状态),也可以使用woocommerce_order_status_processing钩子,它同样支持所有状态变更场景:

add_action("woocommerce_order_status_processing", "order_status_wapp", 10, 2); 
function order_status_wapp($order_id, $order){  
    if( carbon_get_theme_option( 'show_processing' )) {       
        require("incl/apicall.php");  
        $message = carbon_get_theme_option( 'processing_message' );       
        require("incl/message_attr.php");            
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:00:58