Suspendre/réactiver un utilisateur en fonction du statut d'adhésion WP

Je cherche des conseils sur la façon de :

  • suspendre l’utilisateur Discourse lorsque l’abonnement WP expire ou est annulé, et
  • réactiver l’utilisateur Discourse lorsque l’abonnement précédemment expiré est renouvelé.

WP est le fournisseur SSO. Mon site utilise le code dcpmp de @simon, mais je vais passer de PMPro à WooCommerce + WC Subscriptions + WC Memberships.

Les parties de dcpmp qui ajoutent/suppriment l’utilisateur d’un groupe ne sont pas nécessaires dans ce cas.

Références WC Subscriptions :
Subscriptions Action Reference Documentation - WooCommerce
Introduction to Subscriptions Developer Documentation Documentation - WooCommerce
https://prospress.github.io/subscriptions-rest-api-docs/

Avez-vous jeté un coup d’œil à WordPress Membership Integration (Private Forum) with Discourse ? Je suis presque certain que cela vous guide à travers le processus.

Je l’ai fait, mais cette méthode ne suspend pas l’utilisateur dans Discourse, ce qui signifie qu’il continuera à recevoir des messages par e-mail et pourra interagir avec le forum de cette manière.

Ah, je vois. Je ne vois pas que le plugin dispose d’une fonction pour suspendre l’utilisateur (mais je ne sais peut-être pas où chercher). Le mieux que vous puissiez faire est d’ajouter un appel API au hook qui est déclenché lorsque l’abonnement échoue et de suspendre l’utilisateur à ce moment-là. Vous pouvez le trouver en utilisant Reverse engineer the Discourse API

Suspendre et réactiver des utilisateurs sera la partie facile. L’astuce consiste à déterminer sur quelles actions de WooCommerce s’accrocher.

Il semble que l’action woocommerce_subscription_status_updated devrait fonctionner. Ce hook passe trois paramètres : $subscription, $new_status, $old_status. Les paramètres de statut sont des chaînes de caractères, leur valeur devrait donc être assez explicite. Le paramètre $subscription est un objet WC_Subscription. Je suppose qu’il contient des détails permettant de trouver l’ID de l’utilisateur associé à l’abonnement. Je devrais cependant y jeter un coup d’œil pour confirmer.

Peut-être ceux-ci :
Subscriptions Action Reference Documentation - WooCommerce


Action : 'woocommerce_subscription_status_active'

Paramètres : $subscription Un objet WC_Subscription représentant l’abonnement dont le statut vient d’être modifié.

Description : Cette action est déclenchée après que le statut de l’abonnement spécifié par $subscription a été changé en « actif ». Le statut de l’abonnement peut être passé de « en attente » à « actif », de « en pause » à « actif », ou d’un autre statut personnalisé à « actif ».


Action : 'woocommerce_subscription_status_cancelled'

Paramètres : $subscription Un objet WC_Subscription représentant l’abonnement dont le statut vient d’être modifié.

Description : Cette action est déclenchée après que le statut de l’abonnement spécifié par $subscription a été changé.

Le statut de l’abonnement peut être passé de « en attente » à « annulé », de « en pause » à « annulé », de « en attente d’annulation » à « annulé », ou d’un autre statut personnalisé à « annulé ».


Action : 'woocommerce_subscription_status_expired'

Paramètres : $subscription Un objet WC_Subscription représentant l’abonnement dont le statut vient d’être modifié.

Description : Déclenchée lorsqu’un abonnement atteint la fin de sa durée, si une durée a été définie sur le produit d’abonnement au moment de l’achat ou si une date de fin a été définie autrement sur l’abonnement.

Je vais essayer d’exécuter quelques tests pour voir à quoi ils ressemblent.