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?
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
}
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 )