Suspender/desuspender usuario según el estado de la membresía en WP

Busco orientación sobre cómo:

  • suspender al usuario de Discourse cuando la suscripción de WP expire o sea cancelada, y
  • reactivar al usuario de Discourse cuando la suscripción previamente expirada se renueve.

WP es el proveedor de SSO. Mi sitio ha estado utilizando el código dcpmp de @simon, pero voy a cambiar de PMPro a WooCommerce + WC Subscriptions + WC Memberships.

Las partes de dcpmp que agregan o eliminan al usuario de un grupo no son necesarias en este caso.

Referencia de WC Subscriptions:
Subscriptions Action Reference Documentation - WooCommerce
Introduction to Subscriptions Developer Documentation Documentation - WooCommerce
https://prospress.github.io/subscriptions-rest-api-docs/

¿Ya echaste un vistazo a WordPress Membership Integration (Private Forum) with Discourse? Estoy bastante seguro de que te guía paso a paso.

Lo he hecho, pero ese método no suspende al usuario en Discourse, lo que significa que seguirá recibiendo publicaciones por correo electrónico y podrá interactuar con el foro de esa manera.

Oh, veo. No veo que el plugin tenga una función para suspender al usuario (aunque puede que no sepa dónde buscar). Lo peor que puedes hacer es agregar una llamada a la API al hook que se ejecuta cuando falla su suscripción y hacer que suspenda al usuario. Puedes encontrarlo en Reverse engineer the Discourse API

Suspender y reactivar usuarios será la parte sencilla. El truco consiste en determinar a qué acciones de WooCommerce conectar. Parece que la acción woocommerce_subscription_status_updated debería funcionar. Este hook pasa tres parámetros: $subscription, $new_status y $old_status. Los parámetros de estado son cadenas, por lo que su valor debería ser bastante claro por sí mismo. El parámetro $subscription es un objeto WC_Subscription. Asumo que contiene detalles que permiten encontrar el ID de usuario asociado a la suscripción. Aunque tendría que revisarlo para confirmarlo.

Tal vez estas:
Subscriptions Action Reference Documentation - WooCommerce


Acción: 'woocommerce_subscription_status_active'

Parámetros: $subscription Un objeto WC_Subscription que representa la suscripción cuyo estado acaba de cambiar.

Descripción: Esta acción se dispara después de que la suscripción especificada con $subscription haya cambiado su estado a activa. El estado de la suscripción pudo haber pasado de pendiente a activa, de en espera a activa o de algún otro estado personalizado a activa.


Acción: 'woocommerce_subscription_status_cancelled'

Parámetros: $subscription Un objeto WC_Subscription que representa la suscripción cuyo estado acaba de cambiar.

Descripción: Esta acción se dispara después de que la suscripción especificada con $subscription haya cambiado su estado.

El estado de la suscripción pudo haber pasado de pendiente a cancelada, de en espera a cancelada, de pendiente de cancelación a cancelada o de algún otro estado personalizado a cancelada.


Acción: 'woocommerce_subscription_status_expired'

Parámetros: $subscription Un objeto WC_Subscription que representa la suscripción cuyo estado acaba de cambiar.

Descripción: Se dispara cuando una suscripción llega al final de su período, si se estableció una duración en el producto de suscripción al momento de la compra o si se estableció una fecha de finalización en la suscripción.

Voy a intentar ejecutar algunas pruebas para ver cómo son.