Salut à tous, je remonte ce vieux post car ma question concerne Restrict Content Pro, elle est donc similaire à celle de l’auteur original. En gros, j’aide à gérer un site dont le système d’adhésion est Restrict Content Pro, et j’essaie d’intégrer la synchronisation des groupes Discourse pour les adhésions payantes RCP : fondamentalement, toute personne ayant une adhésion doit être synchronisée avec le groupe Members sur son forum Discourse.
J’ai passé beaucoup de temps à essayer de faire fonctionner quelque chose comme l’exemple de Simon, Gérer l’appartenance aux groupes Discourse avec WP Discourse SSO. Le SSO fonctionne bien, mais les adhésions ne sont toujours pas synchronisées (ajout des membres à un groupe lors de l’activation réussie d’une adhésion, ou suppression des membres d’un groupe à l’expiration de l’adhésion).
Pour ce post, j’essaie simplement de faire fonctionner l’ajout de nouveaux membres à un groupe Discourse. Le forum Discourse du site n’a qu’un seul groupe Discourse : Members. (La suppression des groupes devrait être assez simple, car le hook Restrict Content Pro est le même, il suffit de remplacer le suffixe active par expired. Restrict Content Pro liste le hook d’action rcp_transition_membership_status_active comme se déclenchant à chaque changement de statut d’une adhésion. Il possède des paramètres pour $old_status et $membership_id. L’exécution de rcp_get_membership() renvoie un objet RCP_Membership (qui contient, entre autres, une référence à l’ID utilisateur WordPress).
Voici la version la plus simplifiée à laquelle je suis parvenu :
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// Ajoute un utilisateur au groupe Discourse 'members'.
function rcpdc_add_member_to_group( $membership_id ) {
$membership = rcp_get_membership( $membership_id );
$user_id = $membership->get_user_id();
DiscourseUtilities::add_user_to_discourse_group( $user_id, 'Members' );
}
// Assurez-vous de vérifier que la classe Discourse existe.
if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
// L'action rcp suffixée par {active} se déclenche à chaque nouvelle adhésion
add_action( 'rcp_transition_membership_status_active', 'rcpdc_add_member_to_group' );
}
Si vous voyez quelque chose que j’évidemment fais de travers et qui empêche cette action de s’exécuter correctement, je vous serais très reconnaissant de votre aide. Merci !