Ottieni solo l'URL dell'immagine del profilo dell'autore all'interno di un ciclo
Ho bisogno di ottenere il link dell'immagine del profilo dell'autore del post.
So che posso usare get_avatar();
ma questo visualizza l'intero markup dell'immagine
<img src="http://.../img.png" class="avatar img-responsive" alt="immagine">
Ma ho bisogno solo del valore src
dell'immagine del profilo dell'autore.
Come posso ottenerlo? Forse possiamo usare del php
o js
per estrarre solo il valore src
dall'output totale.
La mia seconda domanda è, come posso aggiungere quell'immagine
come post_thumbnail
se non esiste un'immagine in evidenza per quel post?
Inserendo il seguente codice all'interno del loop dovrebbe soddisfare le tue esigenze:
<?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().'" />';
}
?>

Non credo che get_avatart_uri()
sia un nome di funzione esistente disponibile in WordPress...

https://developer.wordpress.org/reference/functions/get_avatar_url/, sembra un errore di battitura.

Oltre a utilizzare get_avatar_url
, puoi ancora usare get_avatar
. Se non sbaglio, è questo quello che stai cercando.
Domanda 1
Ottenere il link dell'immagine del profilo dell'autore del post
<?php
// esegui l'output solo se esiste la funzione gravatar
if (function_exists('get_avatar')) { ?>
<?php
// Converti l'email in un hash md5 e imposta la dimensione dell'immagine a 32px
$gravatar = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '&s=32';
// Converti l'email in un hash md5 e rimuovi la dimensione dell'immagine per usarla come immagine del post
$gravatar_bg = 'http://www.gravatar.com/avatar/' . md5(strtolower($user_email)) . '';
?>
<!-- Mostra il gravatar come img src -->
<img src="<?php echo "$gravatar";?>" alt="">
<!-- Mostra il gravatar come background url -->
<div class="avatar" style="background: url(<?php echo $gravatar_bg ?>);" ></div>
<?php } ?>
Domanda 2
Aggiungere quell'immagine come post_thumbnail se non esiste una miniatura per quel post
<?php
// Controlla se il post ha una miniatura
// if ( has_post_thumbnail() ) { // opzione 1
if ( '' != get_the_post_thumbnail() ) { // opzione 2
// se ce l'ha, mostra la miniatura
the_post_thumbnail();
} else {
// altrimenti, mostra l'immagine del gravatar
echo '<img src="<?php echo "$gravatar";?>" alt="">';
}
?>
Spero che questo ti sia utile, buona fortuna!
Risorse: Utilizzo dei Gravatars | hast_post_thumbnail

Ciao, so che posso controllare if(get_the_post_thumbnail())
e visualizzare quell'immagine nel template. Ma questo non imposta il post_thumbnail, lo visualizza solo in quel particolare template. Voglio set_post_thumbnail
. Come posso farlo?

AGGIORNAMENTO (22 maggio 2021) - Sto utilizzando il plugin Simple Local Avatars per permettere agli utenti di aggiornare le immagini localmente. La soluzione qui sotto funzionerà solo se utilizzi questo plugin.
Nel caso qualcuno stia cercando l'immagine completa dell'autore e non la trovi. Ecco un piccolo trucco.
Metodo Semplice
$avatar_url = get_avatar_url( $author_id ); //questo restituirà un'immagine 96x96.
$final_url = str_replace('-96x96.', '.',$author_avatar_url);
Sostituendo -96x96.
con un semplice .
, basta assicurarsi che il nome dell'immagine non includa questa stringa. In alternativa puoi cercare la stessa stringa al contrario e fare la sostituzione usando substr_replace()
così:
Metodo Più Precise
$avatar_url = get_avatar_url( $author_id ); //questo restituirà un'immagine 96x96.
$replace = '-96x96.';
$pos = strpos($avatar_url, $replace, -(strlen($replace)+5)); // +5 per la lunghezza dell'estensione
$final_url = substr_replace($avatar_url, '.', $pos, strlen($replace));
Questo è il primo risultato su Google quando si cerca l'immagine completa dell'autore, quindi potrebbe essere utile a qualcuno.

Non credo che funzionerebbe per i Gravatar predefiniti: la dimensione non è nell'URL in quel modo, è un parametro ?s=
. Come hai configurato i tuoi avatar? Inoltre get_avatar_url ha un parametro 'size' documentato per l'array args.

@Rup Scusa!!! Hai ragione, sto usando "Simple Local Avatars"(https://wordpress.org/plugins/simple-local-avatars/) per permettere agli utenti di impostare le immagini del profilo localmente e penso che il plugin mi permetta di ottenere un URL nel formato che sto ottenendo. Mi ero completamente dimenticato di questo plugin. Aggiungerò le informazioni su questo plugin nella risposta sopra.
