2016-08-01 8 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

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); 

NOTE

フックが実行されていることを確認してください。はい、これは動作します。

幸運。

+0

これで私のコードを更新しました。ただ今発注する顧客を待って、それが発火したかどうかを確認してください! – alexkwatson

+0

@alexkwatsonを確認したら、ここに戻って報告します。 –

+0

これは動作しません。なぜあなたは$ new_status!= "completed"を提案したのだろうと疑問に思っています。確かに '$ new_status ==" completed "は正しいですか?私もこれを試しましたが、まだ何も起こりません。 @hemnath – alexkwatson

0

クエリモニタ - https://wordpress.org/plugins/query-monitor/を使用して、あなたのページにどのフックが発生したかを確認することをお勧めします。

+0

私はこれのようなものを考えましたが、それは現在のページのリクエストのみです。私が解雇する必要があるフックは、顧客が注文をしたときです。私は何の支配もなく、いつでも起こる可能性があります – alexkwatson

関連する問題