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 ?
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
}
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 )