J’ai utilisé Discourse et PMPro, ainsi que l’extension Zapier de PMPro. J’essaie de mettre à jour le niveau d’adhésion de mon utilisateur sur Discourse.
Je m’attends à ce que, lorsque je modifie le niveau d’adhésion d’un utilisateur via wp-admin, cela soit également mis à jour dans la section des utilisateurs administrateurs de mon site Discourse.
Alors, que dois-je faire pour y parvenir ? Donnez-moi quelques pistes.
Vous devrez ajouter une action à votre fichier functions.php
/* voir l'exemple sur http://hookr.io/actions/pmpro_after_change_membership_level/ */
do_action( 'pmpro_after_change_membership_level', $level_id, $user_id, $cancel_level );
function action_pmpro_after_change_membership_level( $level_id, $user_id, $cancel_level ) {
. . . . code qui récupère le niveau d'adhésion et le groupe, puis les ajoute au groupe
}
Salut Jay, merci pour ta réponse, ça a fonctionné de mon côté, mais l’ancienne valeur est toujours présente. Cela signifie que j’ai les deux valeurs : le nouveau niveau d’adhésion et l’ancien niveau d’adhésion. As-tu une idée pour supprimer l’ancienne valeur du niveau d’adhésion ?
J’ai utilisé la même fonction et j’ai besoin d’aide. J’ai également publié le code, veuillez consulter le message ci-dessus.
Voici mon code de mise à jour du niveau d’appartenance :
function action_pmpro_after_change_membership_level( $level_id, $user_id, $cancel_level ) {
$group_name = dcpmp_get_level_for_id( $level_id );
if ( is_wp_error( $group_name ) ) {
return null;
}
$groupname = DiscourseUtilities::get_discourse_user( $user_id, false );
// Supprime l'utilisateur.
$result = DiscourseUtilities::remove_user_from_discourse_group( $user_id, $groupname );
if ( ! empty( $result->success ) ) {
// Supprime la clé de métadonnées du niveau d'appartenance.
delete_user_meta( $user_id, "dcpmp_group_{$groupname}" );
}
$result1 = DiscourseUtilities::add_user_to_discourse_group( $user_id, $group_name );
if ( ! empty( $result1->success ) ) {
// Si l'utilisateur a été ajouté au groupe, ajoutez une paire clé/valeur de métadonnées qui pourra être utilisée ultérieurement.
add_user_meta( $user_id, "dcpmp_group_{$group_name}", 1, true );
}
Cela affectera un objet utilisateur Discourse à $groupname. Je pense que vous devez supprimer cette ligne et utiliser la variable $group_name que vous définissez dans la première ligne de votre code.
Si vous souhaitez que nous vous fournissions une solution, vous devrez nous payer. Inscrivez-vous à un plan d’hébergement sur https://discourse.org/buy