2016-11-08 7 views
2

サブスクリプションの支払いが成功したときに、アカウントの資金(40ポンド)をユーザーのアカウントに追加するカスタム関数を作成しました。WooCommerceサブスクリプション - 更新時にアクションフックがトリガーされない

私が持っている問題はrenewellは資金がアカウントに追加されません発生したときフックが、トリガするようには思えないということです。

私はWoocommerceでデバッグを有効にし、cronの管理内手動で更新をプッシュし、私はこれを行う際に機能が働き、資金が口座に加算されます。

ここは私の関数(functions.php)です。 -----

解決しよう

add_action('processed_subscription_payment', 'custom_add_funds', 10, 2); 

function custom_add_funds($user_id) { 

    // get current user's funds 
    $funds = get_user_meta($user_id, 'account_funds', true); 

    // add £40 
    $funds = $funds + 40.00; 

    // add funds to user 
    update_user_meta($user_id, 'account_funds', $funds); 

} 

-----私は、ワードプレスのメモリ制限までに必要なIPNのURLは、致命的なエラー秒/は

答えて

1

を排気した、あなたはこの異なるアプローチを試してみてくださいこの2 different hooks(だけ支払いを受けているサブスクリプションを表す$subscriptionオブジェクト)を使用して:

  • サブスクリプションで支払いが行われると、最初のフックがトリガーされます。これは、最初の注文、交換注文または更新注文の支払いになります。
  • サブスクリプションで更新が行われると、2番目のフックがトリガーされます。

これは(その中にあなたのコードで)スニペットです:

add_action('woocommerce_subscription_payment_complete', 'custom_add_funds', 10, 1); 
add_action('woocommerce_subscription_renewal_payment_complete', 'custom_add_funds', 10, 1); 
function custom_add_funds($subscription) { 

    // Getting the user ID from the current subscription object 
    $user_id = get_post_meta($subscription->ID, '_customer_user', true); 

    // get current user's funds 
    $funds = get_user_meta($user_id, 'account_funds', true); 

    // add £40 
    $funds += 40; 

    // update the funds of the user with the new value 
    update_user_meta($user_id, 'account_funds', $funds); 
} 

これは動作するはずですが、それは未テストだとして、私はそれは私が持っている他の良い回答に基づいている場合でも、実際にはわかりませんメイド。

このコードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

+0

ありがとう、私はそれを入れて、次の更新を待っています。 –

+0

これは2回トリガーされませんか? –

+0

ドキュメントを読むと、最初のフックが最初の注文で、2番目のフックが各更新支払いのために発生することがわかります... – LoicTheAztec

関連する問題