web-dev-qa-db-fra.com

Comment obtenir le nom de l'auteur par son identifiant

Je veux montrer les messages récents comme celui-ci.

<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"]; ?> by
    <?php echo $recent["post_author"]; ?>
      </a>
    </li>
  <?php } ?>
</ul>

Mais $recent["post_author"] ne renvoie que l'id de l'auteur. Et ceci est en dehors de The Loop, donc je ne peux pas utiliser la fonction the_author().

Comment puis-je obtenir le nom de l'auteur à partir de l'ID? Ou peut-être qu'il y a une meilleure façon de le faire?

3
ironsand

Essayez get_user_by() :

get_user_by( $field, $value );

Dans votre cas, vous passeriez ID, et l'ID utilisateur:

// Get user object
$recent_author = get_user_by( 'ID', $recent["post_author"] );
// Get user display name
$author_display_name = $recent_author->display_name;
8
Chip Bennett
echo get_the_author_meta('display_name', $recent["post_author"]);
// code from deprecated.php function @get_author_name

D'autres exemples de get_the_author_meta ($ meta_key, $ author_id) vous pouvez trouver au Codex.

8
Butuzov

La table wp_posts, qui correspond à celle que vous interrogez avec wp_get_recent_posts(), n'inclut pas de colonne de nom d'auteur. Il ne porte que l'identifiant de l'auteur (comme vous l'avez déjà découvert).

Donc, vous devez utiliser une autre fonction WordPress appelée get_user_by(). Cela vous permettra de prendre le auteur ID et de trouver le auteur correspondant .

Quelque chose comme ça devrait marcher (non testé):

<ul id="recent-posts">
<?php foreach( wp_get_recent_posts() as $recent ){

    $user_id = get_user_by('id', $recent["post_author"]);  // Get user name by user id
        ?>
        <li>
        <a href="<?php echo get_permalink($recent['ID']); ?>">
        <?php echo $recent["post_title"]; ?> by
        <?php echo $user_id->display_name; ?>
        </a>
        </li>
    <?php 
    } ?>
</ul>
0
josh