Вы можете использовать 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 генерирует новый заказ для каждого продления подписки.