Come cambiare l'avatar dell'utente?
Gli avatar sono pensati per essere controllati dall'utente, non da te. Quindi sì, in un certo senso, sei costretto a utilizzare il servizio Gravatar. Ma ricorda, dà all'utente la possibilità di utilizzare lo stesso avatar ovunque, e puoi sempre limitare la visualizzazione di un gravatar in base alle classificazioni di contenuto (G, PG, PG-13, R).
Gravatar è un servizio ospitato, ecco perché non c'è una sezione "Carica Avatar" nel profilo.
Dici che "non puoi usare un plugin", ma in realtà è l'unico modo per aggiungere funzionalità. Se vuoi usare qualcosa di diverso da Gravatar, dovrai caricare un plugin per supportarlo. Ci sono alcuni plugin che supportano avatar locali:
In alternativa, ti consiglio di educare i tuoi utenti su cosa sono i Gravatars e come utilizzarli.

È TOTALMENTE SBAGLIATO! Non devo educare i miei utenti, perché voglio cambiare l'avatar dell'amministratore ecc. E non ne sono in grado. E per quanto ricordo c'era un'opzione del genere? ;/ Questo mi costringe a usare qualche strano sito che non voglio nemmeno usare. È STRANO. Immagina di voler impostare un blog per una rete aziendale locale senza accesso a internet (motivi di sicurezza, dati riservati) ecc. E non è nemmeno possibile senza un plugin. Che vergogna.

@Wordpressor: Con "è totalmente sbagliato", intendi che la risposta di EAMann è sbagliata, o è la situazione con cui non sei d'accordo? Gravatar è di proprietà di Automattic, l'azienda di Matt Mullenweg, che decide cosa va in WordPress. Probabilmente è per questo motivo che supportano solo questo sistema di default, e altri metodi sono delegati ai plugin.

@Wordpressor: se lo esegui all'interno di un'azienda probabilmente vorresti anche avere 1 LDAP per motivi di sicurezza e single sign on. Questa è la chiave: avresti anche una posizione unica per la "foto dell'utente". Fuori dall'applicazione.

@Jan Fabry: la sua risposta va bene, ma l'intera politica NON lo è. Sto sviluppando il mio tema sul mio PC personale. Ho solo un utente lì - admin. Voglio cambiare il suo avatar. Sono in grado di prenderlo, visualizzarlo, cambiarne le dimensioni ma non sono in grado di modificarlo. Non è carino. E dover fornire la mia email solo per poter cambiare il mio avatar è semplicemente ridicolo.

@Jan Fabry: LOL! È ancora più divertente. Devo creare un input aggiuntivo nel mio pannello di amministrazione, perché il mio utente deve inviare il suo Gravatar ID al back-end. WOOOHAA! FANTASTICO! Ti odio Matt Mullenweg.

@Wordpressor Per contestualizzare Decisions not Options è uno dei capisaldi di come vengono fatte le cose in WordPress. Scegliere come default i gravatar è una decisione che ha abbastanza senso, è abbastanza flessibile e promuove un servizio affiliato. E quando una decisione viene presa, di solito spetta ai plugin fornire modifiche o alternative.

Se ti stai chiedendo come sostituire il gravatar predefinito con uno personalizzato, puoi inserire questo codice nel file functions.php (o meglio ancora nel custom-functions.php se il tuo tema lo supporta).
add_filter( 'avatar_defaults', 'customgravatar' );
function customgravatar ($avatar_defaults) {
$myavatar = get_home_url('Template_directory') . '/images/mycustomgravatar.jpg';
$avatar_defaults[$myavatar] = "Il Mio Logo Personalizzato";
return $avatar_defaults;
}
Crea un file immagine e caricalo nella directory delle immagini del tuo sito. La stringa "Il Mio Logo Personalizzato" è l'etichetta per l'opzione nella sezione Discussione del tuo Pannello di Controllo. In questo modo ogni utente che non ha un gravatar otterrà il logo del tuo sito al suo posto.

Hai bisogno di un po' più codice per far funzionare l'hook avatar_defaults rispetto alla risposta di Ray Mitchell. Ho trovato questo codice nelle pagine del codex di WordPress e ha funzionato bene grazie all'ID utente normalizzato passato all'hook dell'avatar predefinito (questo funziona sia con un semplice ID utente o email SIA con l'oggetto utente stesso)
// Applica il filtro
add_filter( 'get_avatar' , 'my_custom_avatar' , 1 , 5 );
function my_custom_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
$user = false;
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
$user = get_user_by( 'id' , $id );
} elseif ( is_object( $id_or_email ) ) {
if ( ! empty( $id_or_email->user_id ) ) {
$id = (int) $id_or_email->user_id;
$user = get_user_by( 'id' , $id );
}
} else {
$user = get_user_by( 'email', $id_or_email );
}
if ( $user && is_object( $user ) ) {
if ( $user->data->ID == '1' ) {
$avatar = 'IL_TUO_NUOVO_URL_IMMAGINE';
$avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
}
return $avatar;
}

$default
è pensato per essere l'avatar predefinito nel caso in cui questi if-statement falliscano?

Come indicato nel codex, $default è l'URL dell'avatar predefinito quando non è selezionato alcun avatar, quello predefinito di WordPress utilizza "Mystery man"

https://codex.wordpress.org/Function_Reference/get_avatar per maggiori informazioni

Aggiungi il tuo file avatar.jpg nella cartella immagini del tuo tema child e il seguente codice nel file functions del tuo tema child:
add_filter( 'get_avatar' , 'add_custom_avatar' , 1 , 5 );
function add_custom_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
$user = false;
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
$user = get_user_by( 'id' , $id );
} elseif ( is_object( $id_or_email ) ) {
if ( ! empty( $id_or_email->user_id ) ) {
$id = (int) $id_or_email->user_id;
$user = get_user_by( 'id' , $id );
}
} else {
$user = get_user_by( 'email', $id_or_email );
}
if ( $user && is_object( $user ) ) {
if ( $user->data->ID == '1' ) {
$avatar = sprintf( '%s/images/avatar.jpg', get_stylesheet_directory_uri() );
$avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
}
return $avatar;
}
