Obține doar URL-ul imaginii de profil a autorului într-o buclă
Am nevoie să obțin link-ul imaginii de profil a autorului articolului.
Știu că pot folosi get_avatar();
dar acesta afișează întregul markup al imaginii
<img src="http://.../img.png" class="avatar img-responsive" alt="imagine">
Dar am nevoie doar de valoarea src
a imaginii de profil a autorului.
Cum pot obține asta? Poate putem folosi php
sau js
pentru a extrage doar valoarea src
din întregul output.
A doua mea întrebare este, cum pot adăuga acea imagine
ca post_thumbnail
dacă nu există o miniatură pentru acel articol?
Punând următorul cod în interiorul loop-ului ar trebui să îți satisfacă nevoile:
<?php
$get_author_id = get_the_author_meta('ID');
$get_author_gravatar = get_avatar_url($get_author_id, array('size' => 450));
if(has_post_thumbnail()){
the_post_thumbnail();
} else {
echo '<img src="'.$get_author_gravatar.'" alt="'.get_the_title().'" />';
}
?>

https://developer.wordpress.org/reference/functions/get_avatar_url/, se pare că e o greșeală de scriere.

Pe lângă utilizarea funcției get_avatar_url
, poți utiliza în continuare get_avatar
. Dacă nu mă înșel, aceasta este ceea ce cauți.
Întrebarea 1
Obține legătura către imaginea de profil a autorului postării
<?php
// afișează doar dacă funcția gravatar există
if (function_exists('get_avatar')) { ?>
<?php
// Converteste emailul în hash md5 și setează dimensiunea imaginii la 32px
$gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '&s=32';
// Converteste emailul în hash md5 și elimină dimensiunea imaginii pentru a folosi ca imagine de fundal
$gravatar_bg = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '';
?>
<!-- Afișează gravatarul ca img src -->
<img src="<?php echo "$gravatar";?>" alt="Imagine profil Gravatar" title="Imagine profil Gravatar">
<!-- Afișează gravatarul ca fundal URL -->
<div class="avatar" style="background: url(<?php echo $gravatar_bg ?>);" ></div>
<?php } ?>
Întrebarea 2
Adaugă acea imagine ca post_thumbnail dacă nu există thumbnail pentru postare
<?php
// Verifică dacă postarea are thumbnail
// if ( has_post_thumbnail() ) { // opțiunea 1
if ( '' != get_the_post_thumbnail() ) { // opțiunea 2
// dacă are, afișează thumbnail-ul
the_post_thumbnail();
} else {
// dacă nu are, arată imaginea gravatar
echo '<img src="<?php echo "$gravatar";?>" alt="Imagine profil Gravatar implicită" title="Imagine profil Gravatar implicită">';
}
?>
Sper că acest lucru te ajută, mult succes!
Resurse: Utilizarea Gravatars | hast_post_thumbnail

Bună, știu că pot verifica if(get_the_post_thumbnail())
și să afișez acea imagine în template. Dar asta nu setează post_thumbnail, doar o afișează în acel template specific. Vreau să folosesc set_post_thumbnail
. Cum pot face asta?

ACTUALIZARE(22 Mai, 2021) - Folosesc un plugin Simple Local Avatars pentru a permite utilizatorilor să actualizeze imaginile local. Soluția de mai jos va funcționa doar dacă utilizați acest plugin.
Doar în cazul în care cineva caută imaginea completă a autorului și nu o găsește. Iată un mic hack.
Metodă Simplă
$avatar_url = get_avatar_url( $author_id ); //va returna o imagine 96x96.
$final_url = str_replace('-96x96.', '.',$author_avatar_url);
Înlocuind -96x96.
cu doar un .
, Trebuie doar să vă asigurați că numele imaginii nu include acest șir. Alternativ, puteți căuta același șir din spate și faceți înlocuirea folosind substr_replace()
astfel:
Metodă Mai Preciză
$avatar_url = get_avatar_url( $author_id ); //va returna o imagine 96x96.
$replace = '-96x96.';
$pos = strpos($avatar_url, $replace, -(strlen($replace)+5)); // +5 pentru lungimea extensiei
$final_url = substr_replace($avatar_url, '.', $pos, strlen($replace));
Acesta este primul rezultat pe Google când căutați imaginea completă a autorului, așa că ar putea ajuta pe cineva.

Nu cred că asta ar funcționa pentru Gravatarele implicite: dimensiunea nu este în URL în acel fel, este un parametru ?s=
. Cum ai configurat avatarele tale? În plus, get_avatar_url are un parametru 'size' documentat în array-ul de argumente.

@Rup Scuze!!! Ai dreptate, eu folosesc "Simple Local Avatars"(https://wordpress.org/plugins/simple-local-avatars/) pentru a permite utilizatorilor să-și seteze imaginile de profil local și cred că plugin-ul îmi permite să obțin un URL în formatul pe care îl am. Am uitat complet de acest plugin. Voi adăuga informații despre acest plugin în răspunsul de mai sus.
