WordPress: Listar autores con posts y thumbnails

Estaba buscando un plugin para un proyecto que necesita listar autores y su post y no encontré un plugin que lo hiciera.
Scott Bressler escribió un script para mostrar a los autores y luego poner la info de los post de cada autor. Muy útil.

Aquí el codigo.

Via: http://www.scottbressler.com/blog/2011/03/wordpress-archive-page-with-all-authors-and-all-posts/

<?php
	// http://www.scottbressler.com/blog/2011/03/wordpress-archive-page-with-all-authors-and-all-posts/
	
	// Argumentos para pasar para el get_users
	$args = array( 'orderby' => 'display_name', 'order' => 'ASC', 'who' => 'autores' );
	// Query for the users
	$autores = get_users( $args );
?> 
 
<?php
	// Bucle por todos los usuarios, imprimiendo los nombres con vinculos a su sección de archivos
	for ( $i = 0; $i < count( $autores ); ++$i ) {
		$autor = $autores[$i];
			echo "<a href='#{$autor->user_nicename}'>$autor->display_name</a>";
		if ( $i < count( $autores ) - 1 ) {
			echo ' | ';
		}
	}
?>
	 
<?php
	// Bucle por todos usuarios, imprimiendo todos los posts mientras corre
	foreach ( $autores as $autor ) { ?>
		<a name="<?php echo $autor->user_nicename; ?>"></a>
		<div class="autor-posts-wrapper" id="autor-<?php echo $autor->ID; ?>-posts-wrapper">
			<div class="autor-avatar" id="autor-<?php echo $autor->ID; ?>-avatar">
				<?php echo get_avatar( $autor->ID, 96 ); ?>
			</div>
			<div class="autor-posts" id="autor-<?php echo $autor->ID; ?>-posts">
				<h2><a href="<?php echo get_author_posts_url( $autor->ID ); ?>"><?php echo $autor->display_name; ?></a></h2>
			
			<?php
			// Crea un loop, almacenando todos los post del usuario
			// 'posts_per_page' => -1 busca todos los articulos o puedes de
			$args = array( 'author' => $autor->ID, 'posts_per_page' => -1 );
			$posts = query_posts($args);
			
			// if we already have the output in another template, like:
			// get_template_part( 'loop', 'all-authors' ); // Pulls in loop-all-authors.php from theme
			
			// Ahora que tenemos los posts simula un loop o usa get_template_part
			// si ya tenemos la salida en otra plantilla, como:
			// get_template_part( 'loop', 'all-authors' ); // Saca loop-all-authors.php del tema
			
			
			if ( have_posts() ) : ?>
				<ul class="autor-post-list" id="autor-<?php echo $autor->ID; ?>-post-list">
					<?php while ( have_posts() ) : the_post(); // Imprime lo que queramos para cada post - por ahora solo titulo y fecha ?>
						<li>
							<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> &mdash; <?php echo get_the_date(); ?>
						</li>
					<?php endwhile; ?>
				</ul><!-- #autor-post-list -->
			<?php else: ?>
				<p>Este autor no ha publicado nada aún.</p>
			<?php endif; ?>
			</div><!-- #autor-posts -->
		</div><!-- #autor-posts-wrapper -->
<?php } // Fin de bucle por todos los usuarios ?>
  • Yo estaba buscando algo similar: listar todos las entradas o posts de un usuario concreto (concretamente el que está conectado (o logueado).
    Por ejemplo, si el usuario “pepito” tuviese 2 entradas llamadas “entrada 1” y “entrada 2”, quedaría algo como lo siguiente:

    ¡Bienvenido pepito!

    Estos son tus entradas:

    – entrada 1
    – entrada 2

    • Kaled Kelevra

      Bueno, decir que finalmente encontré una forma de poder hacerlo… se me había olvidado comentarlo. >.<
      Si a alguien le interesa que me lo diga y se lo diré con mucho gusto. 😉

      ¡Saludos! 😀

      • Gonzalo Gervic M.

        Yo lo necesito! Ayuda

        • Federico Bozo

          Lo lograste? Cómo te puedo ayudar?