1

我是顽固的 .NET 家伙。涉足 PHP,我仅将 WordPress 用作个人博客和摄影爱好的临时用户。但是,我想曝光已经足够让我的老板让我创建一个 WooCommerce 订阅插件。

业务逻辑如下:

客户提供三种订阅

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

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

所以,我正在阅读和消化所有我能拿到的文档,我对这个动作有疑问:woocommerce_subscription_status_cancelled

文档说:

说明:在 $subscription 指定的订阅状态发生变化后触发此操作。

第一个问题:

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

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

第二个问题:

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

4

1 回答 1

1

cancel_subscriptions_for_order()woocommerce_subscription_status_cancelled在钩子被触发时被调用。因此,您可以执行 aremove_action并将其替换为您自己的功能。

您可以在此处的 woocommerce-subscriptions Github 存储库中找到此操作:class-wc-subscriptions-manager.php

于 2017-06-28T16:42:59.727 回答