Programma di aggiornamento avatar forzato di DiscourseConnect SSO in modo programmato

Ho impostato tutto e funziona, quindi se qualcuno cambia il proprio avatar sul mio sito WordPress ed esce dal forum e accede di nuovo, l’avatar viene aggiornato su Discourse.

Ma le persone non sanno di dover uscire, ed è piuttosto fastidioso, quindi vorrei attivarla da solo. Ho un hook che si attiva quando qualcuno aggiorna il proprio avatar. Cosa posso aggiungere per inviare direttamente il nuovo avatar a Discourse?

Ciao @Shauny. Quale plugin per avatar stai usando per gestire gli avatar e come l’hai configurato?

Sto usando Ultimate Member per gli avatar, ho trovato il giusto hook che si attiva una volta che un utente ne carica uno, devo solo inviarlo a Discourse.

Ecco l’azione:

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 ){
    // fai qualcosa
}

Ottimo, quindi vuoi fare quanto segue

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

Dovrai trovare l’URL dell’avatar su Wordpress (forse lo troverai nella documentazione di Ultimate Member) e impostarlo sulla variabile $avatar_url.

Ho dovuto aggiungere ai parametri

'external_id' => $user_id,

Ma a parte questo, funziona. Grazie!

(Tuttavia ora ho il problema che l’hook che mi è stato dato viene attivato prima che il file venga spostato, quindi ottiene il vecchio avatar… ma non è colpa tua :sweat_smile:)

1 Mi Piace

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