DiscourseConnect SSO força atualização de avatar programaticamente

Tenho tudo configurado e funcionando, então se alguém mudar o avatar no meu site WordPress e depois sair do fórum e entrar novamente, ele atualiza o avatar no Discourse.

Mas as pessoas não sabem que precisam sair, e isso é bastante irritante, então eu gostaria de acionar isso por conta própria. Tenho um hook que dispara quando alguém atualiza o avatar. O que posso adicionar para enviar o novo avatar diretamente para o Discourse?

Olá @Shauny. Qual plugin de avatares você está usando para gerenciar avatares e como você configurou isso?

Estou usando o Ultimate Member para os avatares, encontrei o hook certo que dispara assim que um usuário faz o upload, só preciso então enviar para o Discourse.

Aqui está a ação:

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

Ótimo, então você quer fazer o seguinte

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

Você precisará descobrir o URL do avatar no WordPress (talvez você o encontre na documentação do Ultimate Member) e defini-lo para a variável $avatar_url.

Tive que adicionar aos parâmetros
'external_id' => $user_id,
Mas fora isso, funciona. Obrigado!

(No entanto, agora tenho o problema de que o hook que me foi dado é acionado antes que o arquivo seja movido, então ele pega o avatar antigo… mas isso não é culpa sua :sweat_smile:)

1 curtida

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