Php 订单状态完成时触发功能

Php 订单状态完成时触发功能,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我试图在订单完成时触发一个函数。我正在使用以下代码: add_action('woocommerce_order_status_completed', array($this, 'payment_complete' ), 1); 然后这个函数: public function payment_complete($order_id) { $this->generate_order_file($order_id); } 此函数用于生成订单文件,但根本不调用它。我之前试图让它

我试图在订单完成时触发一个函数。我正在使用以下代码:

add_action('woocommerce_order_status_completed', array($this, 
  'payment_complete' 
), 1);
然后这个函数:

public function payment_complete($order_id) { 
  $this->generate_order_file($order_id); 
}
此函数用于生成订单文件,但根本不调用它。我之前试图让它在错误日志中添加一条消息


我正在使用WooCommerce订单状态控制插件,订单将自动更改为在付款后完成。但是由于某些原因,woocommerce\u order\u status\u completed操作没有触发。

功能

function payment_complete( $order_id, $old_status, $new_status ){
        if( $new_status == "completed" ) {
            $this->generate_order_file($order_id); 
        }
}
钩住

add_action( 'woocommerce_order_status_changed', array( $this, 'payment_complete'), 99, 3 );
注意

确保钩子被执行。是的,这会有用的


祝你好运。

最好的方法是使用以下操作:

add_action( 'woocommerce_order_status_completed', 'your_function', 10, 1);
function your_function($order_id) {
}

为什么这是最好的方法?@upss1988,因为它减少了函数调用。您只需要在“已完成”状态下运行此函数。关于另一个答案,没有必要对所有状态更改运行该函数,并过滤掉我们不需要的更改。