Avatars Wordpress depuis Discourse lorsque Discourse est le fournisseur SSO

Je pense que la cause de l’exception est que votre function my_wpdc_sso_client_updated_user ne renvoie pas le tableau $updated_user. Ce tableau est nécessaire pour la fonction qui ajoute le filtre wpdc_sso_client_updated_user afin qu’il continue.

Vous devez également définir l’ID utilisateur WordPress de l’utilisateur dans l’appel à update_user_meta.

Cela fonctionne, mais désactive la fonctionnalité de redimensionnement du plugin Simple Local Avatars :

add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ); // empêche le redimensionnement des avatars
add_filter( 'wpdc_sso_client_updated_user', 'my_wpdc_sso_client_updated_user', 10, 2 );
function my_wpdc_sso_client_updated_user( $updated_user, $query ) {
	if ( isset( $query['avatar_url'] ) ) {
		$new_avatar_url = $query['avatar_url'];
		$wp_user_id = $updated_user['ID'];

		$avatar_data = array(
			'full' => $new_avatar_url,  // URL de la nouvelle image d'avatar
		);
		update_user_meta( $wp_user_id, 'simple_local_avatar', $avatar_data );
	}

	return $updated_user;
}

La raison pour laquelle le redimensionnement des avatars est empêché est que le redimensionnement est effectué avec le code de l’éditeur d’images WordPress. Pour qu’il fonctionne, l’image doit être téléchargée sur WordPress. Notez que si vous omettez la ligne add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ) du code ci-dessus, le plugin Simple Local Avatars tentera de redimensionner les images, générera un avertissement PHP, puis utilisera l’image en taille réelle - donc rien ne semblera cassé du point de vue de l’utilisateur.

Je ne suis pas tout à fait sûr de la combinaison de l’utilisation des avatars Discourse avec le plugin Simple Local Avatars. Le problème que je vois est que le plugin donne aux utilisateurs la possibilité de télécharger un avatar personnalisé sur WordPress. S’ils le font, puis se reconnectent à WordPress depuis Discourse, ils pourraient se demander ce qu’il est advenu de l’avatar qu’ils ont téléchargé. Ce serait plus complexe à développer, mais il serait peut-être préférable d’ajouter la possibilité de définir délibérément votre avatar Discourse comme votre avatar WordPress sur la page de profil WordPress de l’utilisateur.