Cómo obtener el nombre del autor por la identificación del autor

3

Quiero mostrar publicaciones recientes como esta.

<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>

Pero $recent["post_author"] devuelve solo el id del autor. Y esto está fuera de The Loop , así que no puedo usar la función the_author() .

¿Cómo puedo obtener el nombre del autor a partir de ID? ¿O tal vez hay una mejor manera de hacerlo?

    
pregunta ironsand 23.10.2013 - 17:20

4 respuestas

8

Pruebe get_user_by() :

get_user_by( $field, $value );

En su caso, pasaría la ID y la ID de usuario:

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

Más ejemplos de get_the_author_meta ($ meta_key, $ author_id) que puede encontrar en Codex.

    
respondido por el Butuzov 23.10.2013 - 17:42
0

La tabla wp_posts , que es la que está consultando con wp_get_recent_posts() , no incluye una columna con el nombre del autor. Solo lleva la identificación del autor (como ya lo ha descubierto).

Entonces, lo que tienes que hacer es usar otra función de WordPress llamada get_user_by() . Esto le permitirá tomar el ID de autor y encontrar el nombre del autor correspondiente.

Algo como esto debería funcionar (no probado):

<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>
    
respondido por el josh 23.10.2013 - 17:44
-1

En tu caso, esto podría funcionar:

<?php $user_info = get_userdata($recent["post_author"]);
echo $user_info->user_login; ?>
    
respondido por el Znith 28.04.2016 - 12:20

Lea otras preguntas en las etiquetas