Come cambiare l'avatar dell'utente?

24 gen 2011, 16:51:02
Visualizzazioni: 52K
Voti: 5

Esiste un modo per cambiare l'avatar dell'utente senza plugin? Perché non c'è una sezione "Carica Avatar" in Utenti > Il tuo profilo?

Non posso utilizzare un plugin. Sono cieco o sono costretto a usare Gravatar? ;/

3
Commenti

C'è un motivo per cui non puoi usare i plugin? È un blog su wordpress.com? (Usa @Jan nella tua risposta così ricevo una notifica)

Jan Fabry Jan Fabry
24 gen 2011 17:59:26

@Jan: il motivo è che sto aiutando il mio amico a costruire il suo tema gratuito. E uno dei nostri obiettivi è renderlo anche senza plugin.

Wordpressor Wordpressor
24 gen 2011 22:57:51

Ovviamente, puoi sempre includere tutto il codice di un plugin anche nel tuo template (tramite il file functions.php). Questo rientra ancora nella tua definizione di "senza plugin"?

Jan Fabry Jan Fabry
25 gen 2011 09:24:59
Tutte le risposte alla domanda 7
7

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.

24 gen 2011 17:13:36
Commenti

È 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 Wordpressor
24 gen 2011 17:23:04

@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.

Jan Fabry Jan Fabry
24 gen 2011 17:58:28

@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.

edelwater edelwater
24 gen 2011 19:07:14

@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.

Wordpressor Wordpressor
24 gen 2011 23:02:47

@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 Wordpressor
24 gen 2011 23:06:18

@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.

Rarst Rarst
24 gen 2011 23:19:53

@Wordpressor Per favore canta un testo casuale di Hello Dolly. Ti farà sentire meglio ;)

Michal Mau Michal Mau
25 gen 2011 06:11:15
Mostra i restanti 2 commenti
1

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.

25 gen 2011 03:46:27
Commenti

Utilizzo questo codice da anni, ma ora devo aggiungere un testo ALT per i gravatar. Non sono sicuro di dove inserirlo senza rischiare di rompere il codice.

japanworm japanworm
23 mag 2015 17:17:13
4

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;
}
28 nov 2016 14:17:28
Commenti

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

nu everest nu everest
12 dic 2016 05:46:58

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

jilt jilt
12 dic 2016 11:28:37

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

jilt jilt
12 dic 2016 11:29:28

So che è vecchio, ma ho passato gli ultimi giorni a cercare una soluzione, e la tua ha funzionato per me. Grazie!

730wavy 730wavy
5 lug 2020 23:42:04
0

So che in un progetto su un sito, sono riuscito a creare un campo nella pagina di modifica del profilo utente per accettare un percorso di immagine (caricata tramite la pagina media se ricordo bene) che poteva essere utilizzata come avatar. Senza bisogno di plugin.

25 gen 2011 07:29:42
0

Ho notato che dipende dal tema attivato. Nessuna opzione nel tema Mantra, ad esempio, ma c'è un'opzione nel tema predefinito di BuddyPress.

30 ott 2012 13:00:19
0

Puoi farlo... Devi aggiungere l'immagine ai tuoi media. Copia l'URL del file multimediale e incollalo/collegalo all'URL dell'avatar personalizzato dell'utente durante la modifica del profilo. FATTO!

18 gen 2016 13:43:08
0

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;
}
5 mar 2017 14:24:59