我是一个顽固的.NET家伙。涉猎PHP,我只使用WordPress作为个人博客和我的摄影爱好的临时用户。但是,我猜这个曝光足以让我的老板让我创建一个WooCommerce订阅插件。
这是业务逻辑:
客户提供三种订阅
如果用户注册了6个月或1年的订阅,然后在6个月或1年之前取消,则业主将不会立即取消订阅。他想要做的是将订阅的续订从“自动”更改为“手动”,以便客户每个月都会继续付款,直到原始订阅期限到期为止。 (请不要就这个逻辑发表评论。这不是我的。)
所以,我正在阅读和消化所有可以获得的文档,我对此行动有疑问:woocommerce_subscription_status_cancelled
docs说:
描述:在使用$ subscription指定的订阅更改其状态后触发此操作。
第一个问题:
我想知道的是......当它说after the subscription specified with $subscription has had its status changed
时......这是否意味着用户改变了状态?或者在更改并记录实际状态后?
换句话说,当我触发此动作时,状态是否已经改变?或者,在用户选择取消之后,但在状态更改到达数据库之前,操作是否会发生?
第二个问题:
我是否正确假设我可以将自己的方法分配给此操作以阻止(或撤消)实际取消,而只是将续订类型从自动更改为手动?
答案 0 :(得分:1)
woocommerce_subscription_status_cancelled
挂钩时会调用 cancel_subscriptions_for_order()。因此,您可以执行remove_action
并将其替换为您自己的功能。
您可以在woocommerce-subscriptions Github repo class-wc-subscriptions-manager.php - line 34上找到此操作。