Come ottenere il nome dell'autore tramite l'ID dell'autore
Voglio mostrare i post recenti in questo modo.
<ul id="recent-posts">
<?php foreach( wp_get_recent_posts() as $recent ){ ?>
<li>
<a href="<?php echo get_permalink($recent['ID']); ?>">
<?php echo $recent["post_title"]; ?> di
<?php echo $recent["post_author"]; ?>
</a>
</li>
<?php } ?>
</ul>
Ma $recent["post_author"]
restituisce solo l'ID dell'autore. E questo è al di fuori del The Loop
, quindi non posso utilizzare la funzione the_author()
.
Come posso ottenere il nome dell'autore dall'ID? O forse c'è un modo migliore per farlo?

Prova get_user_by()
:
get_user_by( $field, $value );
Nel tuo caso, dovresti passare ID e l'ID dell'utente:
// Ottieni l'oggetto utente
$recent_author = get_user_by( 'ID', $recent["post_author"] );
// Ottieni il nome visualizzato dell'utente
$author_display_name = $recent_author->display_name;

echo get_the_author_meta('display_name', $recent["post_author"]);
// codice dalla funzione deprecata @get_author_name
Altri esempi di get_the_author_meta($meta_key, $author_id) li puoi trovare sul Codex.

La tabella wp_posts
, che stai interrogando con wp_get_recent_posts()
, non include una colonna con il nome dell'autore. Contiene solo l'ID dell'autore (come hai già scoperto).
Quindi, quello che devi fare è utilizzare un'altra funzione di WordPress chiamata <a href="http://codex.wordpress.org/Function_Reference/get_user_by" rel="nofollow">get_user_by()</a>
. Questo ti permetterà di prendere l'ID dell'autore e trovare il corrispondente nome dell'autore.
Qualcosa come questo dovrebbe funzionare (non testato):
<ul id="recent-posts">
<?php foreach( wp_get_recent_posts() as $recent ){
$user_id = get_user_by('id', $recent["post_author"]); // Ottieni il nome utente dall'ID utente
?>
<li>
<a href="<?php echo get_permalink($recent['ID']); ?>">
<?php echo $recent["post_title"]; ?> di
<?php echo $user_id->display_name; ?>
</a>
</li>
<?php
} ?>
</ul>

Immagino che sia stato votato negativamente perché manca la spiegazione e a causa della formattazione, ho corretto la formattazione ma sono sicuro che puoi sistemare l'altra parte. (forse se non abbiamo una corrispondenza utente, $user_info
è false
e abbiamo un problema con la parte $user_info->user_login
? Ma forse questo non è un problema all'interno del ciclo qui )
