WooCommerce 订阅 - 初始付款操作
WooCommerce Subscriptions - Action on initial payment
我正在使用 WooCommerce 订阅插件,特别是 woocommerce_subscription_payment_complete
功能。
我是这样使用的:
add_action('woocommerce_subscription_payment_complete','subscription_created');
function subscription_created($subscription) {
echo 'Run when subscription payment is complete';
}
这有效,但它也会在续订付款完成时触发。有谁知道确定付款是用于初始订阅付款而不是续订的方法吗?
您可以使用 woocommerce_checkout_subscription_created
,但这里的问题是它会在付款处理之前触发 - 我假设您甚至在付款成功后也需要触发。
解决此问题的一种方法是在订阅 post 上设置元数据,表示您的自定义函数是否已 运行,并使用 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
可能是个好主意,检查它是否包含订阅产品,然后 运行ning 您的功能,但如果 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';
}
这有效,但它也会在续订付款完成时触发。有谁知道确定付款是用于初始订阅付款而不是续订的方法吗?
您可以使用 woocommerce_checkout_subscription_created
,但这里的问题是它会在付款处理之前触发 - 我假设您甚至在付款成功后也需要触发。
解决此问题的一种方法是在订阅 post 上设置元数据,表示您的自定义函数是否已 运行,并使用 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
可能是个好主意,检查它是否包含订阅产品,然后 运行ning 您的功能,但如果 WooCommerce 为每个产品生成一个新订单,那将不起作用续订。