【发布时间】:2021-09-12 14:57:48
【问题描述】:
我们在 Woocommerce 订阅设置中遇到了默认同步选项不起作用的情况。我创建了一个手动日历,我的functions.php 文件在订阅创建时引用它,但它只在订阅创建时检查,然后插件自动将下一次续订设置为此后每 4 周。
我需要在每次创建订阅和/或续订后触发我的续订日期检查器功能,以从我的日历中计算下一个续订日期。我知道我至少可以尝试两个钩子,它们是:
wcs_renewal_order_created 和 woocommerce_subscription_payment_complete,但我不知道它们什么时候被触发,不知道哪个是最安全的。
关于woocommerce_subscription_payment_complete,WC 订阅文档说:
在订阅付款时触发。这可以是初始订单或续订订单的付款。但是,重要的是要注意,与提前续订相关的订阅日期更改的处理方式与其他续订不同,因此不应依赖此操作来捕获订阅的下一个付款日期。
我不能 100% 确定他们在笔记中提到的案例,但这足以让我停下来。
关于wcs_renewal_order_created,我不清楚何时这会触发:
这些订单始终是通过 wcs_create_renewal_order() 函数创建的,无论它们是通过 WooCommerce > 编辑订阅管理屏幕手动创建的,还是通过 WooCommerce REST API 的订阅端点创建的。因此,可以使用此过滤器添加、删除或更新续订订单上任何内容的价值。
例如,这可用于为特定续订订单添加折扣,例如每年的第 12 个订单。它还可以用于为某个续订订单添加一次性费用,例如按月订阅的特殊年度额外费用。
在此钩子期间是否会尝试通过update_dates() 设置next_date 密钥来推送即将处理的当前付款或已经发生的付款,因此现在设置下一个日期是安全的?
在处理给定订阅的当前周期之后立即以编程方式设置下一个续订日期的最可靠方法是什么?
【问题讨论】:
标签: wordpress woocommerce woocommerce-subscriptions