Cum să schimbi avatarul utilizatorului?

24 ian. 2011, 16:51:02
Vizualizări: 52K
Voturi: 5

Există vreo modalitate de a schimba avatarul utilizatorului fără plugin-uri? De ce nu există o secțiune "Încărcare Avatar" în Utilizatori > Profilul tău?

Nu pot folosi un plugin. Sunt orb sau sunt forțat să folosesc Gravatar? ;/

3
Comentarii

Există vreun motiv pentru care nu poți folosi plugin-uri? Este acesta un blog pe wordpress.com? (Folosește @Jan în răspunsul tău ca să primesc o notificare)

Jan Fabry Jan Fabry
24 ian. 2011 17:59:26

@Jan: motivul este că îl ajut pe prietenul meu să-și construiască propria temă gratuită. Și unul dintre obiectivele noastre este să o facem și fără plugin-uri.

Wordpressor Wordpressor
24 ian. 2011 22:57:51

Desigur, poți include întotdeauna tot codul dintr-un plugin și în template-ul tău (prin fișierul functions.php). Consideri că asta încă se încadrează în definiția ta de "fără plugin-uri"?

Jan Fabry Jan Fabry
25 ian. 2011 09:24:59
Toate răspunsurile la întrebare 7
7

Avatarurile sunt menite să fie controlate de utilizator, nu de tine. Deci, într-un fel, ești obligat să folosești serviciul Gravatar. Dar nu uita, acesta oferă utilizatorului posibilitatea de a folosi același avatar oriunde, iar tu poți restricționa afișarea unui gravatar în funcție de ratingul de conținut (G, PG, PG-13, R).

Gravatar este un serviciu găzduit, motiv pentru care nu există o secțiune "Încarcă Avatar" în profil.

Spui că "nu poți folosi un plugin", dar de fapt, acesta este singurul mod prin care poți adăuga funcționalități. Dacă vrei să folosești ceva altceva decât Gravatar, va trebui să încarci un plugin care să-l susțină. Există câteva plugin-uri care acceptă avataruri locale:

Altfel, îți recomand să-i educi pe utilizatori despre ce sunt Gravatarele și cum să le folosească.

24 ian. 2011 17:13:36
Comentarii

ASTA E TOTAL GREȘIT! Nu trebuie să-mi educ utilizatorii, pentru că vreau să schimb avatarul administratorului etc. Și nu am posibilitatea. Și din câte îmi amintesc, exista o astfel de opțiune? ;/ Asta mă forțează să folosesc un site ciudat pe care nici măcar nu vreau să-l folosesc. ASTA E CIUDAT. Imaginează-ți că vreau să configurez un blog pentru o rețea locală de afaceri fără acces la internet (din motive de securitate, date restricționate) etc. Și nici măcar nu este posibil fără un plugin. Ce rușine.

Wordpressor Wordpressor
24 ian. 2011 17:23:04

@Wordpressor: Prin "asta e total greșit", te referi că răspunsul lui EAMann este greșit sau este situația cu care nu ești de acord? Gravatar este deținut de Automattic, compania lui Matt Mullenweg, care decide ce intră în WordPress. Probabil acesta este motivul pentru care ei acceptă doar acest serviciu din cutie, iar alte metode sunt delegate pluginurilor.

Jan Fabry Jan Fabry
24 ian. 2011 17:58:28

@Wordpressor: dacă rulezi aceasta într-o companie, probabil ai dori și 1 LDAP din motive de securitate și single sign on. Aceasta este cheia ta: ai dori și o singură locație pentru "imaginea utilizatorului". În afara aplicației.

edelwater edelwater
24 ian. 2011 19:07:14

@Jan Fabry: răspunsul lui este OK, dar întreaga politică NU este. Dezvolt propria mea temă pe propriul PC. Am doar un singur utilizator acolo - admin. Vreau să-i schimb avatarul. Pot să-l preiau, să-l afișez, să-i modific dimensiunea, dar nu pot să-l schimb. Nu este frumos. Și să-mi dau adresa de mail doar pentru a putea schimba propriul avatar este pur și simplu ridicol.

Wordpressor Wordpressor
24 ian. 2011 23:02:47

@Jan Fabry: LOL! E și mai amuzant. Trebuie să creez un câmp suplimentar în panoul meu de administrare, pentru că utilizatorul meu trebuie să trimită ID-ul Gravatar către back-end. WOOOHAA! UIMITOR! Te urăsc Matt Mullenweg.

Wordpressor Wordpressor
24 ian. 2011 23:06:18

@Wordpressor Pentru context, Decizii nu Opțiuni este una dintre pilonii modului în care se fac lucrurile în WordPress. Implicitul către gravatare este o decizie care are destul sens, este suficient de flexibilă și promovează un serviciu afiliat. Iar când se ia o decizie, de obicei plugin-urile sunt cele care oferă ajustări sau alternative.

Rarst Rarst
24 ian. 2011 23:19:53

@Wordpressor Te rog cântă versuri aleatorii din Hello Dolly. Te va face să te simți mai bine ;)

Michal Mau Michal Mau
25 ian. 2011 06:11:15
Arată celelalte 2 comentarii
1

Dacă te întrebi cum să înlocuiești gravatarul implicit cu unul personalizat, poți introduce acest cod în functions.php (sau mai bine în custom-functions.php dacă tema ta o suportă).

add_filter( 'avatar_defaults', 'customgravatar' );

function customgravatar ($avatar_defaults) {
$myavatar = get_home_url('Template_directory') . '/images/mycustomgravatar.jpg';
$avatar_defaults[$myavatar] = "Logo Personalizat";
return $avatar_defaults;
}

Creează un fișier imagine și încarcă-l în directorul de imagini al site-ului tău. "Logo Personalizat" este eticheta opțiunii din secțiunea Discuții din Panoul de control. În acest fel, orice utilizator care nu are un gravatar va primi logo-ul site-ului tău în loc.

25 ian. 2011 03:46:27
Comentarii

Folosesc acest cod de mult timp, dar trebuie să adaug un text ALT pentru gravatar. Nu sunt sigur unde pot introduce asta fără să stric codul.

japanworm japanworm
23 mai 2015 17:17:13
4

Ai nevoie de un pic mai mult cod pentru ca hook-ul avatar_defaults să funcționeze decât răspunsul lui Ray Mitchell, am găsit acest cod pe paginile wordpress codex și a funcționat bine datorită ID-ului de utilizator normalizat transmis către hook-ul avatar implicit (acest lucru funcționează fie cu un simplu ID de utilizator sau email ȘI cu obiectul utilizator în sine)

    // Aplică filtru
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 = 'URL_IMAGINE_NOUA';
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }

    }

    return $avatar;
}
28 nov. 2016 14:17:28
Comentarii

Este $default destinat să fie avatarul implicit în cazul în care aceste declarații if eșuează?

nu everest nu everest
12 dec. 2016 05:46:58

După cum este menționat în codex, $default este URL-ul avatarului implicit atunci când nu este selectat niciun avatar, implicit WordPress folosește "Mystery man"

jilt jilt
12 dec. 2016 11:28:37

https://codex.wordpress.org/Function_Reference/get_avatar pentru mai multe informații

jilt jilt
12 dec. 2016 11:29:28

Știu că este vechi, dar am petrecut ultimele zile căutând o soluție, iar a ta a funcționat pentru mine. Mulțumesc!

730wavy 730wavy
5 iul. 2020 23:42:04
0

Știu că pe un site de proiect, am reușit să creez un câmp pe pagina de editare a profilului utilizatorului pentru acceptarea unei căi de imagine (încărcată prin pagina media, dacă îmi amintesc corect) care putea fi utilizată pentru avatare. Fără a fi nevoie de plugin-uri.

25 ian. 2011 07:29:42
0

Am observat că depinde de ce temă este activată. Nu există opțiune în tema Mantra, de exemplu, dar există o opțiune în tema implicită BuddyPress.

30 oct. 2012 13:00:19
0

Poți să faci asta... Trebuie să adaugi imaginea în media. Copiază URL-ul fișierului media și lipește-l/adaugă-l la URL-ul avatarului personalizat al utilizatorului în secțiunea de editare a utilizatorului. REZOLVAT!

18 ian. 2016 13:43:08
0

Adaugă fișierul tău avatar.jpg în folderul images al temei child și următorul cod în fișierul functions al temei 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