Avatares de WordPress desde Discourse cuando Discourse es el proveedor SSO

Creo que la causa de la excepción es que tu function my_wpdc_sso_client_updated_user no está devolviendo la matriz $updated_user. Esa matriz es necesaria para la función que agrega el filtro wpdc_sso_client_updated_user para que continúe.

También necesitas establecer el ID de usuario de WordPress del usuario en la llamada a update_user_meta.

Esto funciona, pero deshabilita la funcionalidad de redimensionamiento del plugin Simple Local Avatars:

add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ); // previene el redimensionamiento de avatares
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 nueva imagen de avatar
		);
		update_user_meta( $wp_user_id, 'simple_local_avatar', $avatar_data );
	}

	return $updated_user;
}

La razón para prevenir el redimensionamiento de avatares es que el redimensionamiento se realiza con el código del editor de imágenes de WordPress. Para que funcione, la imagen debe descargarse en WordPress. Ten en cuenta que si omites la línea add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ) del código anterior, el plugin Simple Local Avatars intentará redimensionar las imágenes, generará una advertencia de PHP y luego usará la imagen de tamaño completo, por lo que nada parecerá roto desde el punto de vista del usuario.

No estoy muy seguro de combinar el uso de avatares de Discourse con el plugin Simple Local Avatars. El problema que veo es que el plugin da a los usuarios la opción de subir un avatar personalizado en WordPress. Si lo hacen, y luego vuelven a iniciar sesión en WordPress desde Discourse, podrían preguntarse qué ha pasado con el avatar que subieron. Sería más complejo de desarrollar, pero podría ser mejor agregar la capacidad de establecer deliberadamente tu avatar de Discourse como tu avatar de WordPress en la página de perfil de usuario de WordPress.