DiscourseConnect SSO fuerza la actualización del avatar de forma programática

Tengo todo configurado y funcionando, de modo que si alguien cambia su avatar en mi sitio de WordPress y luego cierra sesión en el foro y vuelve a iniciar sesión, se actualiza el avatar en Discourse.

Pero la gente no sabe que tiene que cerrar sesión, y eso es bastante molesto, así que me gustaría activarlo yo mismo. Tengo un hook que se activa cuando alguien actualiza su avatar. ¿Qué puedo añadir para que envíe el nuevo avatar directamente a Discourse?

Hola @Shauny. ¿Qué plugin de avatares estás usando para gestionar los avatares y cómo lo has configurado?

Estoy usando Ultimate Member para los avatares, he encontrado el hook correcto que se dispara una vez que un usuario carga uno, solo necesito enviarlo a Discourse.

Aquí está la acción:


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 ){
    // hacer algo
}

Genial, así que quieres hacer lo siguiente

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 del avatar de Ultimate Member
    $params = array(
        'external_id' => $user_id,
        'avatar_url' => $avatar_url,
        'avatar_force_update' => 'true'
     )
    DiscourseUtilities::sync_sso_record( $params, $user_id );
}

Necesitarás averiguar la URL del avatar en WordPress (quizás la encuentres en la documentación de Ultimate Member) y asignarla a la variable $avatar_url.

Tuve que añadir a los parámetros
'external_id' => $user_id,
Pero aparte de eso, funciona. ¡Gracias!

(Sin embargo, ahora tengo el problema de que el hook que me diste se dispara antes de que se mueva el archivo, por lo que obtiene el avatar antiguo… pero eso no es culpa tuya :sweat_smile:)

1 me gusta

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