WP サブスクリプションの有効期限が切れた、またはキャンセルされた際に Discourse ユーザーを停止(suspend)し、以前に期限切れとなったサブスクリプションが更新された際にユーザーの停止を解除する方法について、ガイダンスを求めています。
WP は SSO プロバイダーです。当サイトは現在、@simon 氏の dcpmp コードを使用していますが、PMPro から WooCommerce + WC Subscriptions + WC Memberships へ移行予定です。
この場合、dcpmp のユーザーをグループに追加/削除する機能は不要です。
WC Subscriptions 参照:
Subscriptions Action Reference Documentation - WooCommerce
Introduction to Subscriptions Developer Documentation Documentation - WooCommerce
https://prospress.github.io/subscriptions-rest-api-docs/
pfaffman
(Jay Pfaffman)
2019 年 10 月 29 日午後 10:51
2
その方法はありますが、Discourse 上でユーザーを停止(サスペンド)しないため、メールで投稿が届いたり、その方法でフォーラムとやり取りしたりすることが可能です。
pfaffman
(Jay Pfaffman)
2019 年 10 月 29 日午後 11:39
4
ああ、なるほど。プラグインにユーザーを停止する機能があるようには見えませんが(どこを見ればよいかわからない可能性もあります)。最悪のケースとして、サブスクリプションの失敗時に呼び出されるフックに API 呼び出しを追加し、ユーザーを停止させることができます。これは Reverse engineer the Discourse API を使って確認できます。
simon
2019 年 10 月 29 日午後 11:43
5
ユーザーの停止と停止解除は比較的簡単です。難しいのは、どの WooCommerce アクションにフックするかを特定することです。
woocommerce_subscription_status_updated アクションが機能するようです。このフックには 3 つのパラメータが渡されます:$subscription、$new_status、$old_status です。ステータスパラメータは文字列なので、その値は非常に分かりやすいはずです。$subscription パラメータは WC_Subscription オブジェクトです。これには、サブスクリプションが関連付けられているユーザー ID を特定できる詳細情報が含まれていると推測されますが、確認するためには実際に確認する必要があります。
おそらくこれらです:
Subscriptions Action Reference Documentation - WooCommerce
アクション: 'woocommerce_subscription_status_active'
パラメータ: $subscription 直前にステータスが変更されたサブスクリプションを表す WC_Subscription オブジェクト。
説明: このアクションは、$subscription で指定されたサブスクリプションのステータスがアクティブに変更された後にトリガーされます。サブスクリプションのステータスは、保留からアクティブ、一時停止からアクティブ、または他のカスタムステータスからアクティブに遷移した可能性があります。
アクション: 'woocommerce_subscription_status_cancelled'
パラメータ: $subscription 直前にステータスが変更されたサブスクリプションを表す WC_Subscription オブジェクト。
説明: このアクションは、$subscription で指定されたサブスクリプションのステータスが変更された後にトリガーされます。
サブスクリプションのステータスは、保留からキャンセル、一時停止からキャンセル、キャンセル待ちからキャンセル、または他のカスタムステータスからキャンセルに遷移した可能性があります。
アクション: 'woocommerce_subscription_status_expired'
パラメータ: $subscription 直前にステータスが変更されたサブスクリプションを表す WC_Subscription オブジェクト。
説明: サブスクリプション製品を購入時に期間が設定されている場合、またはサブスクリプションに終了日が設定されている場合に、サブスクリプションの期間が満了したときにトリガーされます。
実際にいくつかテストを実行して、どのような形式か確認してみます。