WooCommerce订阅 - 对初始付款的行动

时间:2018-06-12 11:26:05

标签: wordpress woocommerce woocommerce-subscriptions

我正在使用WooCommerce订阅插件,特别是woocommerce_subscription_payment_complete函数。

我正在使用它:

add_action('woocommerce_subscription_payment_complete','subscription_created');
function subscription_created($subscription) {
    echo 'Run when subscription payment is complete';
}

这样可行,但续订付款完成时也会触发。有没有人知道如何确定付款是用于初始订阅付款而不是续订?

1 个答案:

答案 0 :(得分:1)

您可以使用woocommerce_checkout_subscription_created,但问题是它会在付款处理之前触发 - 我假设您需要在付款成功后解雇您。

解决此问题的一种方法是在订阅帖子上设置元,表示您的自定义函数是否已运行,并使用if语句检查该元:

add_action('woocommerce_subscription_payment_complete','subscription_created');
function subscription_created($subscription) {
    //check if meta exists/is not true
    if (!get_post_meta($subscription->id, 'has_my_function_run', true)) {
        //update meta to bool(true)
        update_post_meta($subscription->id, 'has_my_function_run', true);
        //run your function
        echo 'Run when subscription payment is complete';
    }  
}

我确信有更好的方法可以解决这个问题,所以请留意其他答案。考虑挂钩woocommerce_order_status_processing,检查它是否包含订阅产品,然后运行您的功能可能是一个好主意,但如果WooCommerce为每次订阅续订生成新订单,那么这将无效。