Penso che la causa dell’eccezione sia che la tua funzione my_wpdc_sso_client_updated_user non restituisce l’array $updated_user. Quell’array è necessario per la funzione che aggiunge il filtro wpdc_sso_client_updated_user per continuare.
È inoltre necessario impostare l’ID utente di WordPress nella chiamata a update_user_meta.
Questo funziona, ma disabilita la funzionalità di ridimensionamento del plugin Simple Local Avatars:
add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ); // impedisce il ridimensionamento degli avatar
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 della nuova immagine avatar
);
update_user_meta( $wp_user_id, 'simple_local_avatar', $avatar_data );
}
return $updated_user;
}
Il motivo per cui si impedisce il ridimensionamento degli avatar è che il ridimensionamento viene eseguito con il codice dell’editor di immagini di WordPress. Affinché funzioni, l’immagine deve essere scaricata su WordPress. Si noti che se si omette la riga add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ) dal codice sopra, il plugin Simple Local Avatars tenterà di ridimensionare le immagini, genererà un avviso PHP, quindi utilizzerà l’immagine a dimensione intera, quindi nulla sembrerà rotto dal punto di vista dell’utente.
Sono alquanto incerto sulla combinazione dell’uso degli avatar di Discourse con il plugin Simple Local Avatars. Il problema che vedo è che il plugin offre agli utenti la possibilità di caricare un avatar personalizzato su WordPress. Se lo fanno, quindi accedono nuovamente a WordPress da Discourse, potrebbero chiedersi cosa sia successo all’avatar che hanno caricato. Sarebbe più complesso da sviluppare, ma potrebbe essere meglio aggiungere la possibilità di impostare deliberatamente il proprio avatar di Discourse come avatar di WordPress nella pagina del profilo utente di WordPress.