2016-08-01 240 views
0

我試圖在訂單完成時觸發函數。我使用此代碼:WooCommerce在訂單狀態完成時觸發函數

add_action('woocommerce_order_status_completed', array($this, 
    'payment_complete' 
), 1); 

,然後這個功能:

public function payment_complete($order_id) { 
    $this->generate_order_file($order_id); 
} 

此功能是爲了產生一個訂單的文件,但它沒有被調用的。我之前嘗試將它添加到錯誤日誌中,

我使用的是WooCommerce Order Status Control插件,訂單會自動更改並在付款後完成。但由於某種原因,woocommerce_order_status_completed操作不會觸發。

回答

1

功能

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

HOOK

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

注意

確保掛鉤被執行。是的,這將起作用。

祝你好運。

+0

我已經更新了我的代碼。只需等待客戶立即下單,看看它是否發生了火災!當我找到 – alexkwatson

+0

@alexkwatson確定 –

+0

這不起作用時,我會在這裏報告。我想知道爲什麼你建議'$ new_status!=「completed」',當然'$ new_status ==「completed」'是正確的?我也嘗試過這個,但仍然沒有任何反應。 @hemnath – alexkwatson

0

我可以推薦使用查詢監視器 - https://wordpress.org/plugins/query-monitor/ - 查看您的頁面上觸發了哪些鉤子。

+0

我確實想過類似這樣的事情,但那只是針對當前頁面的請求而已。我需要解決的問題是客戶下訂單時,我無法控制並隨時可能發生這種情況 – alexkwatson

相關問題