2016-11-08 80 views
2

我已經做了一個自定義功能,當他們的訂閱付款成功時,賬戶資金(£40)添加到用戶的帳戶。WooCommerce訂閱 - 行動掛鉤沒有觸發續訂

我遇到的問題是鉤子似乎沒有觸發,當更新發生時資金沒有添加到帳戶。

我啓用了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); 

} 

----- -----解決

我需要了WordPress的內存限制,IPN網址是致命的誤碼/耗盡

回答

1

你應該嘗試這種不同的方法使用此2 different hooks(和表示剛剛接收到的支付訂閱的$subscription對象)

  • 訂閱付款時觸發第一個掛鉤。這可以是初始訂單,轉換訂單或續訂訂單的付款。
  • 當訂閱進行續訂付款時,會觸發第二個掛鉤。

這是段(與它的代碼):

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

這不會導致它觸發兩次? –

+0

不,因爲如果您閱讀文檔,您將看到第一個鉤子是在初始訂單中觸發的,第二個鉤子是針對每個續訂支付的... – LoicTheAztec

相關問題