Cum să obții numele autorului folosind ID-ul autorului
Vreau să afișez articolele recente în acest fel.
<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"]; ?> de
<?php echo $recent["post_author"]; ?>
</a>
</li>
<?php } ?>
</ul>
Dar $recent["post_author"]
returnează doar ID-ul autorului. Și acest cod este în afara The Loop
, deci nu pot folosi funcția the_author()
.
Cum pot obține numele autorului din ID? Sau poate există o modalitate mai bună de a face acest lucru?

Încearcă get_user_by()
:
get_user_by( $field, $value );
În cazul tău, ai putea folosi ID și ID-ul utilizatorului:
// Obține obiectul utilizatorului
$recent_author = get_user_by( 'ID', $recent["post_author"] );
// Obține numele afișat al utilizatorului
$author_display_name = $recent_author->display_name;

echo get_the_author_meta('display_name', $recent["post_author"]);
// cod din funcția depreciată.php @get_author_name
Mai multe exemple de utilizare a funcției get_the_author_meta($meta_key, $author_id) puteți găsi în Codex.

Tabelul wp_posts
, pe care îl interoghezi cu wp_get_recent_posts()
, nu include o coloană pentru numele autorului. Acesta conține doar ID-ul autorului (după cum ai descoperit deja).
Deci, ceea ce trebuie să faci este să folosești o altă funcție WordPress numită <a href="http://codex.wordpress.org/Function_Reference/get_user_by" rel="nofollow">get_user_by()</a>
. Aceasta îți va permite să obții ID-ul autorului și să găsești numele autorului corespunzător.
Ceva de genul acesta ar trebui să funcționeze (netestat):
<ul id="recent-posts">
<?php foreach( wp_get_recent_posts() as $recent ){
$user_id = get_user_by('id', $recent["post_author"]); // Obține numele utilizatorului după ID
?>
<li>
<a href="<?php echo get_permalink($recent['ID']); ?>">
<?php echo $recent["post_title"]; ?> de
<?php echo $user_id->display_name; ?>
</a>
</li>
<?php
} ?>
</ul>

Presupun că a fost votat în jos pentru că îi lipsește explicația și din cauza formatării, am remediat formatarea dar sunt sigur că poți repara și partea cealaltă. (poate dacă nu avem o potrivire de utilizator, $user_info
este false
și avem o problemă cu partea $user_info->user_login
? Dar poate că nu este o problemă în bucla de aici)
