您可以使用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 为每次订阅续订生成新订单,这将不起作用。