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.
prosti
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?
hkchakladar
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
@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.
Abhishek Sachan