Cum să schimbi avatarul utilizatorului?
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? ;/

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

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

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

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

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

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.

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;
}

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

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"

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

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

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;
}
