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