Programmer la mise à jour forcée de l'avatar SSO de DiscourseConnect

J’ai tout configuré et cela fonctionne, donc si quelqu’un change son avatar sur mon site WordPress, puis se déconnecte du forum et se reconnecte, l’avatar est mis à jour sur Discourse.

Mais les gens ne savent pas qu’ils doivent se déconnecter, et c’est assez ennuyeux, donc j’aimerais le déclencher moi-même. J’ai un hook qui se déclenche lorsque quelqu’un met à jour son avatar. Que puis-je ajouter pour qu’il envoie directement le nouvel avatar à Discourse ?

Salut @Shauny. Quel plugin d’avatar utilisez-vous pour gérer les avatars, et comment l’avez-vous configuré ?

J’utilise Ultimate Member pour les avatars, j’ai trouvé le bon hook qui se déclenche une fois qu’un utilisateur en télécharge un, il suffit ensuite de l’envoyer à Discourse.

Voici l’action :


add_action( "um_after_upload_db_meta_profile_photo", "um_custom_after_upload_profile_photo", 10, 1 );
function um_custom_after_upload_profile_photo( $user_id ) {
    // faire quelque chose
}

Très bien, vous voulez donc faire ce qui suit

use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;

add_action( "um_after_upload_db_meta_profile_photo", "um_custom_after_upload_profile_photo", 10, 1 );
function um_custom_after_upload_profile_photo( $user_id ){
    $avatar_url = // URL de l'avatar Ultimate Member
    $params = array(
        'external_id' => $user_id,
        'avatar_url' => $avatar_url,
        'avatar_force_update' => 'true'
     )
    DiscourseUtilities::sync_sso_record( $params, $user_id );
}

Vous devrez trouver l’URL de l’avatar sur Wordpress (vous la trouverez peut-être dans la documentation d’Ultimate Member) et l’assigner à la variable $avatar_url.

J’ai dû ajouter aux paramètres
'external_id' => $user_id,
Mais à part ça, ça fonctionne. Merci !

(Cependant, j’ai maintenant le problème que le hook qui m’a été donné est déclenché avant que le fichier ne soit déplacé, donc il récupère l’ancien avatar… mais ce n’est pas de votre faute :sweat_smile:)

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.