需要更好的理解行动:woocommerce_subscription_status_cancelled

时间:2017-06-28 14:39:22

标签: wordpress woocommerce hook-woocommerce woocommerce-subscriptions

我是一个顽固的.NET家伙。涉猎PHP,我只使用WordPress作为个人博客和我的摄影爱好的临时用户。但是,我猜这个曝光足以让我的老板让我创建一个WooCommerce订阅插件。

这是业务逻辑:

客户提供三种订阅

  • 3个月$ x
  • 6个月$ x - 10%
  • 1年$ x - 20%

如果用户注册了6个月或1年的订阅,然后在6个月或1年之前取消,则业主将不会立即取消订阅。他想要做的是将订阅的续订从“自动”更改为“手动”,以便客户每个月都会继续付款,直到原始订阅期限到期为止。 (请不要就这个逻辑发表评论。这不是我的。)

所以,我正在阅读和消化所有可以获得的文档,我对此行动有疑问:woocommerce_subscription_status_cancelled

docs说:

  

描述:在使用$ subscription指定的订阅更改其状态后触发此操作。

第一个问题:

我想知道的是......当它说after the subscription specified with $subscription has had its status changed时......这是否意味着用户改变了状态?或者在更改并记录实际状态后?

换句话说,当我触发此动作时,状态是否已经改变?或者,在用户选择取消之后,但在状态更改到达数据库之前,操作是否会发生?

第二个问题:

我是否正确假设我可以将自己的方法分配给此操作以阻止(或撤消)实际取消,而只是将续订类型从自动更改为手动?

1 个答案:

答案 0 :(得分:1)

触发woocommerce_subscription_status_cancelled挂钩时会调用

cancel_subscriptions_for_order()。因此,您可以执行remove_action并将其替换为您自己的功能。

您可以在woocommerce-subscriptions Github repo class-wc-subscriptions-manager.php - line 34上找到此操作。