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

WooCommerce的woocommerce_order_status_completed钩子报ArgumentCountError错误如何解决

报错根因

你的代码存在钩子参数声明和函数入参数量不匹配的问题:

add_action( 'woocommerce_order_status_completed', 'order_completed',10,1); 这行代码的最后一个参数1,代表你告诉WordPress触发该钩子时只给order_completed函数传递1个参数,但你定义order_completed函数时写了4个入参($order_id, $old_status, $new_status, $order),PHP校验参数数量不匹配就抛出了对应的致命错误。

修复方案

二选一即可:

方案1:修改钩子参数传递数量

将add_action行的最后一个参数改为4,和函数入参数量对齐:

add_action( 'woocommerce_order_status_completed', 'order_completed', 10, 4 );

方案2:简化函数入参(更推荐,冗余逻辑更少)

woocommerce_order_status_completed钩子本身就是订单状态切换为「完成」时才会触发,不需要额外判断新状态,直接简化函数逻辑即可,不需要修改原有add_action配置:

add_action( 'woocommerce_order_status_completed', 'order_completed',10,1);
function order_completed($order_id) {
    $order = wc_get_order( $order_id );
    $total = $order->get_total();
    $coin_avl = $total*25/100;
    
    wp_update_user( array(
        // 这里替换为$order->get_user_id(),避免后台管理员手动改订单状态时,积分错加到管理员账号上
        'ID' => $order->get_user_id(),
        'avl_coin' => $coin_avl
   ) ); 
}
验证方法

修改代码后,手动将一个测试订单的状态改为完成,查看是否还有报错,以及对应用户的avl_coin字段是否按预期更新即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:06:08