WooCommerce插件中订单相关钩子失效问题求助
WooCommerce订单钩子绑定函数不执行的排查与解决
确认钩子绑定时机
不要在插件文件顶部直接绑定WooCommerce钩子,需在WooCommerce初始化完成后再绑定,推荐用woocommerce_loaded或plugins_loaded钩子包裹绑定代码:add_action('woocommerce_loaded', function() { add_action('woocommerce_order_status_changed', 'SP_order_token', 10, 4); });匹配钩子参数个数与函数定义
woocommerce_order_status_changed钩子默认传递4个参数,绑定需指定参数数量,同时函数定义要对应参数:function SP_order_token($order_id, $old_status, $new_status, $order) { // 用日志替代alert做测试,开启WP_DEBUG后可在wp-content/debug.log查看 error_log('SP_order_token已执行,订单ID:' . $order_id); // 你的订单数据获取逻辑 }确认钩子触发条件
woocommerce_order_status_changed仅在订单状态发生变更时触发,后台手动创建订单后需修改订单状态(如从「待付款」改为「已完成」)才会触发该钩子,单纯创建订单不会执行。排查插件加载顺序
若你的插件加载早于WooCommerce,钩子绑定会失效。用woocommerce_loaded钩子绑定可避免此问题,因为它会在WooCommerce完全加载后触发。验证函数本身可用性
直接在插件中调用函数进行测试,排除函数逻辑问题:// 替换为实际订单ID SP_order_token(123, 'pending', 'completed', wc_get_order(123));
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

