Cum să obții numele autorului folosind ID-ul autorului

23 oct. 2013, 18:20:12
Vizualizări: 29.2K
Voturi: 6

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?

0
Toate răspunsurile la întrebare 4
0
13

Î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;
23 oct. 2013 18:42:52
0
10
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.

23 oct. 2013 18:42:37
0

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>
23 oct. 2013 18:44:05
1
-1

În cazul tău, aceasta ar putea funcționa:

<?php $user_info = get_userdata($recent["post_author"]);
echo $user_info->user_login; ?>
28 apr. 2016 13:20:46
Comentarii

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)

birgire birgire
28 apr. 2016 13:26:36