Cómo crear una plantilla de página de autor para WordPress
Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)
Si gestionas un sitio web en el que participan varios autores, podrías desear añadir una plantilla de autor en tu sitio web. Las plantillas de autor ayudan a mostrar más información sobre los escritores y hacen que sea más fácil para los usuarios encontrar otros artículos escritos por el mismo autor. En este tutorial estudiaremos las distintas partes de la plantilla de autor y te enseñaré cómo puedes mejorarla.
Introducción a la plantilla de autor
La plantilla autor.php solía ser algo secundario para la mayoría de los desarrolladores de temas, sin embargo ahora se están concienciando de la importancia de incluir una buena plantilla author.php en sus diseños y de presentar en ella más información aparte de las antiguas entradas del autor.
Si haces clic sobre el enlace del autor en un sitio web WordPress y solo muestra extractos de sus anteriores artículos, probablemente el tema no disponga de una plantilla author.php. Los extractos se muestran debido a la jerarquía de plantillas para los autores:
- author-{nicename}.php
- author-{id}.php
- author.php
- archive.php
- index.php
Dicho en pocas palabras, WordPress primero busca plantillas creadas específicamente para autores concretos, por ejemplo, author-kevin.php o author-24.php (observa: el nombre de la plantilla debe ser el mismo que el nombre de usuario). Si no se ha creado una plantilla concreta para ese autor, WordPress mostrará la información del autor usando la plantilla author.php (que es lo que vamos a ver hoy). Si no existe ninguna plantilla de autor, WordPress usará por defecto la plantilla archive.php y después la plantilla index.php (en caso de no existir la plantilla de archivo).
Enlazar a la página de autor
Veamos brevemente cómo podemos enlazar a la página de autor. Para añadir un enlace hacia la página de un autor, usa simplemente la etiqueta the_author_posts_link dentro del loop.
1 |
<?php the_author_posts_link(); ?> |
Otra útil función es la etiqueta wp_list_authors. Como su nombre sugiere, genera una lista que contiene todos los autores de tu sitio web. No es necesario colocarla dentro del loop y por tanto puede colocarse en cualquier lugar de tu sitio web, por ejemplo, en la columna lateral, en el pié de página, etc.
1 |
<?php wp_list_authors(); ?> |
Por defecto la etiqueta excluye la cuenta del administrador en la lista y a los usuarios que no tengan ninguna entrada. Aquí tienes algunos ejemplos sobre cómo se puede emplear wp_list_authors():
1 |
<?php wp_list_authors('hide_empty=0'); ?> |
Muestra todos los usuarios, incluyendo a aquellos que no han escrito ninguna entrada.
1 |
<?php wp_list_authors('show_fullname=1&optioncount=1'); ?> |
Muestra el número de entradas y el nombre completo de cada autor.
1 |
<?php wp_list_authors('orderby=post_count&order=DESC&number=10'); ?> |
Muestra los diez usuarios principales en orden descendente.
Comprender la plantilla author.php
Siempre he pensado que la mejor manera de comprender cómo funciona un tipo particular de plantilla consiste en observar un ejemplo y descomponer sus partes para analizarlas una a una. La plantilla author.php del tema Twenty Ten es una buena introducción sobre cómo funciona esta plantilla, sin embargo para este artículo he decidido usar el tema predeterminado actual de WordPress Twenty Eleven, ya que está más actualizado.
La plantilla muestra una biografía del autor en la parte superior de la página. La biografía es bastante básica, sólo muestra el gravatar de los autores en el lado izquierdo y su información biográfica a la derecha.
Todas las publicaciones de los autores se muestran debajo de la sección de la biografía. Esta área funciona de la misma manera que la plantilla archive.php. El número de entradas enumeradas por página viene determinada por el número de entradas por página que hayas establecido en www.tusitio.com/wp-admin/options-reading.php.


A continuación verás el código completo de la plantilla author.php del tema Twenty Eleven:
1 |
<?php<br /> |
2 |
/**<br />
|
3 |
* The template for displaying Author Archive pages.<br />
|
4 |
*<br />
|
5 |
* @package WordPress<br />
|
6 |
* @subpackage Twenty_Eleven<br />
|
7 |
* @since Twenty Eleven 1.0<br />
|
8 |
*/<br /> |
9 |
<br /> |
10 |
get_header(); ?><br /> |
11 |
<br /> |
12 |
<section id="primary"><br /> |
13 |
<div id="content" role="main"><br /> |
14 |
<br /> |
15 |
<?php if ( have_posts() ) : ?><br /> |
16 |
<br /> |
17 |
<?php<br /> |
18 |
/* Queue the first post, that way we know<br />
|
19 |
* what author we're dealing with (if that is the case).<br />
|
20 |
*<br />
|
21 |
* We reset this later so we can run the loop<br />
|
22 |
* properly with a call to rewind_posts().<br />
|
23 |
*/<br /> |
24 |
the_post();<br /> |
25 |
?><br /> |
26 |
<br /> |
27 |
<header class="page-header"><br /> |
28 |
<h1 class="page-title author"><?php printf( __( 'Author Archives: %s', 'twentyeleven' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' ); ?></h1><br /> |
29 |
</header><br /> |
30 |
<br /> |
31 |
<?php<br /> |
32 |
/* Since we called the_post() above, we need to<br />
|
33 |
* rewind the loop back to the beginning that way<br />
|
34 |
* we can run the loop properly, in full.<br />
|
35 |
*/<br /> |
36 |
rewind_posts();<br /> |
37 |
?><br /> |
38 |
<br /> |
39 |
<?php twentyeleven_content_nav( 'nav-above' ); ?><br /> |
40 |
<br /> |
41 |
<?php<br /> |
42 |
// If a user has filled out their description, show a bio on their entries.<br />
|
43 |
if ( get_the_author_meta( 'description' ) ) : ?><br /> |
44 |
<div id="author-info"><br /> |
45 |
<div id="author-avatar"><br /> |
46 |
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyeleven_author_bio_avatar_size', 60 ) ); ?><br /> |
47 |
</div><!-- #author-avatar --><br /> |
48 |
<div id="author-description"><br /> |
49 |
<h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2><br /> |
50 |
<?php the_author_meta( 'description' ); ?><br /> |
51 |
</div><!-- #author-description --><br /> |
52 |
</div><!-- #entry-author-info --><br /> |
53 |
<?php endif; ?><br /> |
54 |
<br /> |
55 |
<?php /* Start the Loop */ ?><br /> |
56 |
<?php while ( have_posts() ) : the_post(); ?><br /> |
57 |
<br /> |
58 |
<?php<br /> |
59 |
/* Include the Post-Format-specific template for the content.<br />
|
60 |
* If you want to overload this in a child theme then include a file<br />
|
61 |
* called content-___.php (where ___ is the Post Format name) and that will be used instead.<br />
|
62 |
*/<br /> |
63 |
get_template_part( 'content', get_post_format() );<br /> |
64 |
?><br /> |
65 |
<br /> |
66 |
<?php endwhile; ?><br /> |
67 |
<br /> |
68 |
<?php twentyeleven_content_nav( 'nav-below' ); ?><br /> |
69 |
<br /> |
70 |
<?php else : ?><br /> |
71 |
<br /> |
72 |
<article id="post-0" class="post no-results not-found"><br /> |
73 |
<header class="entry-header"><br /> |
74 |
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1><br /> |
75 |
</header><!-- .entry-header --><br /> |
76 |
<br /> |
77 |
<div class="entry-content"><br /> |
78 |
<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven' ); ?></p><br /> |
79 |
<?php get_search_form(); ?><br /> |
80 |
</div><!-- .entry-content --><br /> |
81 |
</article><!-- #post-0 --><br /> |
82 |
<br /> |
83 |
<?php endif; ?><br /> |
84 |
<br /> |
85 |
</div><!-- #content --><br /> |
86 |
</section><!-- #primary --><br /> |
87 |
<br /> |
88 |
<?php get_sidebar(); ?><br /> |
89 |
<?php get_footer(); ?> |
No te sientas abrumado por el código anterior. Vamos a explicar en un momento la parte principal de esta plantilla (es decir, todo lo que está entre <div id="content" role="main"> y </div><!--content -->. Una vez lo veas por partes, descubrirás que es muy sencillo.
Iniciar el loop
Para mostrar información sobre el autor (como su nombre, URL y biografía) y una lista de las entradas de los autores, tienes que iniciar el loop de WordPress. Todo lo que esté dentro del loop se mostrará en la página de archivo de cada autor (es decir, en la página 1, 2, 3, etc).
1 |
<?php if ( have_posts() ) : ?><br /> |
2 |
<br /> |
3 |
<?php<br /> |
4 |
/* Queue the first post, that way we know<br />
|
5 |
* what author we're dealing with (if that is the case).<br />
|
6 |
*<br />
|
7 |
* We reset this later so we can run the loop<br />
|
8 |
* properly with a call to rewind_posts().<br />
|
9 |
*/<br /> |
10 |
the_post();<br /> |
11 |
?>
|
Mostrar el título de la página
En la parte superior de las páginas de autor, la página del tema Twenty Eleven muestra el texto 'AUTHOR ARCHIVES:' seguido de un enlace al perfil del autor. En la página principal del autor este enlace tiene poca utilidad ya que enlaza a la página actual, sin embargo, si lo situamos en las páginas de archivo del autor (por ej. http://www.tusitio.com/author/admin/page/2/) ayudará a los usuarios a volver a la primera página del autor.
El tema Twenty Eleven usa la función get_author_posts_url para enlazar hacia la página del autor (pasa el ID del autor a esta función invocando get_the_author_meta). También usa get_the_author para mostrar el nombre del autor.
1 |
<header class="page-header"><br /> |
2 |
<h1 class="page-title author"><?php printf( __( 'Author Archives: %s', 'twentyeleven' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' ); ?></h1><br /> |
3 |
</header>
|
Rebobinar el loop de vuelta al principio
Al igual que hemos usado el loop de WordPress para mostrar un enlace al perfil del autor en la parte superior de la página, necesitamos restablecer las entradas usando la función rewind_posts.
1 |
<?php<br /> |
2 |
/* Since we called the_post() above, we need to<br />
|
3 |
* rewind the loop back to the beginning that way<br />
|
4 |
* we can run the loop properly, in full.<br />
|
5 |
*/<br /> |
6 |
rewind_posts();<br /> |
7 |
?>
|
Navegación de página
En la parte superior e inferior de la página de autor verás enlaces hacia entradas más antiguas y más recientes. El tema Twenty Eleven muestra estos enlaces usando la función twentyeleven_content_nav.
1 |
<?php twentyeleven_content_nav( 'nav-above' ); ?> |
Pasando el parámetro nav-above a través de la función mostrará la navegación en la parte superior mientras que nav-below muestra los enlaces de navegación al final de la página.
1 |
<?php twentyeleven_content_nav( 'nav-below' ); ?> |
Puedes encontrar más detalles sobre la función twentyeleven_content_nav en la plantilla de funciones del tema Twenty Eleven (functions.php). La función usa previous_posts_link y next_posts_link para mostrar los enlaces de navegación y se asegura de que no aparezca ninguna navegación en la parte superior de la primera página. También aplica estilo a los enlaces; alineando las entradas más antiguas a la izquierda y las más nuevas a la derecha.
Si quieres añadir una navegación a tu plantilla para los autores, puedes o bien envolver las funciones previous_posts_link y next_posts_link dentro de una división CSS y aplicarles algunos estilos o, si lo prefieres, usar un plugin de navegación como WP PageNavi para que lo haga por ti.
Mostrar la biografía del autor
Para mostrar la información del autor, usamos la función get_the_author_meta (es posible que recuerdes que ya hemos usado antes esta función en la función get_author_posts_url para enlazar a la página del autor). La biografía se mostrará en la parte superior de la página de todos los autores y la declaración if se asegura de que en caso de que el usuario no haya introducido ninguna, no se muestre.
La función get_the_author se usa de nuevo para mostrar el nombre de los autores en el título de su correspondiente biografía y get_avatar para mostrar el Gravatar de los usuarios (el parámetro user_email se utiliza junto con get_the_author_meta para que la función get_avatar sepa cuales son las direcciones de email de los autores).
1 |
<?php<br /> |
2 |
// If a user has filled out their description, show a bio on their entries.<br />
|
3 |
if ( get_the_author_meta( 'description' ) ) : ?><br /> |
4 |
<div id="author-info"><br /> |
5 |
<div id="author-avatar"><br /> |
6 |
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyeleven_author_bio_avatar_size', 60 ) ); ?><br /> |
7 |
</div><!-- #author-avatar --><br /> |
8 |
<div id="author-description"><br /> |
9 |
<h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2><br /> |
10 |
<?php the_author_meta( 'description' ); ?><br /> |
11 |
</div><!-- #author-description --><br /> |
12 |
</div><!-- #entry-author-info --><br /> |
13 |
<?php endif; ?> |
Mostrar las entradas de los autores
El tema Twenty Eleven muestra las entradas de un autor usando la función get_template_part. Esto permite que cualquier plantilla que haya sido creada específicamente para mostrar entradas se cargue directamente en la plantilla del autor.
Al localizar el post_format usando la función get_post_format, el tema permite mostrar distintos tipos de entradas según fueron concebidas. Por ejemplo, si la entrada se estableció como una imagen, se usará la plantilla content-image.php. De igual manera, la plantilla content-link.php podría usarse si el formato seleccionado fue el de un enlace.
1 |
<?php while ( have_posts() ) : the_post(); ?><br /> |
2 |
<br /> |
3 |
<?php<br /> |
4 |
/* Include the Post-Format-specific template for the content.<br />
|
5 |
* If you want to overload this in a child theme then include a file<br />
|
6 |
* called content-___.php (where ___ is the Post Format name) and that will be used instead.<br />
|
7 |
*/<br /> |
8 |
get_template_part( 'content', get_post_format() );<br /> |
9 |
?><br /> |
10 |
<br /> |
11 |
<?php endwhile; ?> |
Si no se encuentra ninguna entrada
Si no se encuentran resultados para un autor, se mostrará un mensaje animando al usuario a cumplimentar el siguiente formulario de búsqueda para realizar una nueva búsqueda.
1 |
<?php else : ?><br /> |
2 |
<br /> |
3 |
<article id="post-0" class="post no-results not-found"><br /> |
4 |
<header class="entry-header"><br /> |
5 |
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1><br /> |
6 |
</header><!-- .entry-header --><br /> |
7 |
<br /> |
8 |
<div class="entry-content"><br /> |
9 |
<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven' ); ?></p><br /> |
10 |
<?php get_search_form(); ?><br /> |
11 |
</div><!-- .entry-content --><br /> |
12 |
</article><!-- #post-0 --><br /> |
13 |
<br /> |
14 |
<?php endif; ?> |
Personalizar la plantilla del autor
Como cualquier otra plantilla de WordPress, author.php se puede personalizar tanto o tan poco como consideres necesario. Puedes crear algo similar a la plantilla de autor de Twenty Eleven y listar una biografía básica en la parte superior de cada página y listar las entradas de la misma forma en que lo haces en las páginas de archivo de las categorías. O también podrías expandir el área de la biografía y listar sus direcciones de correo electrónico, su datos en apps de mensajería (por ej. Google Talk) y la fecha en la que te registraste y crear una plantilla individual para mostrar las entradas del autor.
Personalizar la biografía del autor
El área de la biografía es muy fácil de modificar. Toda la información que el autor introdujo en su perfil puede invocarse mediante la función get_the_author_meta. Puedes pasar dos parámetros a esta función: $field y $userID.
1 |
<?php get_the_author_meta( $field, $userID ); ?> |
$field es el nombre de los datos a recuperar mientras que $userID te permite recuperar datos de un autor específico. El parámetro User ID solo se usa fuera del loop. De todas formas no necesitamos usarlo ya que estamos invocando esta función desde dentro del propio loop, por tanto WordPress conoce ya quién es el usuario del cual deseamos obtener la información.
Aquí tienes una lista con todos los parámetros que puedes invocar usando get_the_author_meta:
- <?php the_author_meta( 'user_login' ); ?> - Muestra el nombre de inicio de sesión del autor.
- <?php the_author_meta( 'user_pass' ); ?> - Muestra la contraseña de los autores en formato hexadecimal
- <?php the_author_meta( 'user_nicename' ); ?> - Muestra el alias del nombre de los autores (el mismo que el de su inicio de sesión)
- <?php the_author_meta( 'user_email' ); ?> - Muestra la dirección de correo electrónico de los autores.
- <?php the_author_meta( 'user_url' ); ?> - Muestra la URL de los autores.
- <?php the_author_meta( 'user_registered' ); ?> - Muestra la fecha en que el autor se registró en tu sitio.
- <?php the_author_meta( 'user_activation_key' ); ?> - Muestra la clave de activación de los autores (si corresponde).
- <?php the_author_meta( 'user_status' ); ?> - Muestra el estado de usuario de los autores, por ejemplo, el usuario que ha confirmado que la cuenta tiene un estado de usuario de 2.
- <?php the_author_meta( 'display_name' ); ?> - Muestra el nombre que el autor ha elegido para mostrar públicamente.
- <?php the_author_meta( 'nickname' ); ?> - Muestra el apodo de los autores.
- <?php the_author_meta( 'first_name' ); ?> - Muestra el nombre de los autores.
- <?php the_author_meta( 'last_name' ); ?> - Muestra el o los apellidos de los autores.
- <?php the_author_meta( 'description' ); ?> - Muestra la biografía de los autores.
- <?php the_author_meta( 'jabber' ); ?> - Muestra la información de contacto de los autores Jabber / Google Talk.
- <?php the_author_meta( 'aim' ); ?> - Muestra la información de contacto de AIM de los autores.
- <?php the_author_meta( 'yim' ); ?> - Muestra la información de contacto de Yahoo messenger de los autores.
- <?php the_author_meta( 'user_level' ); ?> - Muestra el nivel de usuario de los autores (por ejemplo, los admin tienen nivel 10, los suscriptores tienen un nivel 0).
- <?php the_author_meta( 'user_firstname' ); ?> - Muestra el nombre de los autores.
- <?php the_author_meta( 'user_lastname' ); ?> - Muestra el apellido de los autores.
- <?php the_author_meta( 'user_description' ); ?> - Muestra la biografía de los autores.
- <?php the_author_meta( 'rich_editing' ); ?> - Muestra true si el autor está utilizando el editor visual y false si lo ha deshabilitado.
- <?php the_author_meta( 'comment_shortcuts' ); ?> - Muestra true si el autor tiene atajos de teclado habilitados y false si no los tiene.
- <?php the_author_meta( 'admin_color' ); ?> - Muestra el esquema de color que el autor ha elegido para el área de administración (clásico para azul y fresco para gris).
- <?php the_author_meta( 'ID' ); ?> - Muestra el ID de los autores.
Como vimos antes, las plantillas más básicas muestran simplemente el gravatar del autor a un lado y su biografía al otro. Podrías hacer esto un poco más atractivo con algo de CSS. Por ejemplo, podrías colocar una caja de información en un lado mostrando los datos de contacto del usuario (correo electrónico, Google Talk, etc.), y otra mostrando el nombre completo del usuario y la dirección de su sitio web personal.
Personalizar la lista de entradas
Si quieres crear una apariencia consistente con el resto de tu sitio web, aplicar estilos a tu navegación y área de entradas será relativamente sencillo ya que basta con que copies el código de tu plantilla archive.php. Unos pocos cambios a este código pueden dar a tu página de autor un aspecto totalmente diferente a la de los archivos de categoría. Por ejemplo, quizá quieras eliminar las imágenes destacadas o eliminar la metainformación.
En mi propio blog decidí listar simplemente los títulos de las entradas y la fecha en la que fueron publicadas en lugar de un listado completo con el extracto de cada una. Es mucho más sencillo y hace que la búsqueda a través de las entradas de un autor sea mucho más sencilla. Aquí tienes el código que usé para mostrar la lista de entradas en lugar de los extractos completos:
1 |
<ul><br /> |
2 |
<!-- The Loop --><br /> |
3 |
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?><br /> |
4 |
<li><br /> |
5 |
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><br /> |
6 |
<?php the_title(); ?></a>, <br /> |
7 |
<?php the_time('d M Y'); ?> in <?php the_category('&');?><br /> |
8 |
</li><br /> |
9 |
<br /> |
10 |
<?php endwhile; else: ?><br /> |
11 |
<p><?php _e('No posts by this author.'); ?></p><br /> |
12 |
<br /> |
13 |
<?php endif; ?><br /> |
14 |
<!-- End Loop --><br /> |
15 |
</ul>
|
Esto produce lo siguiente:


Conclusión
Al mejorar tu plantilla author.php y mostrar más información sobre los autores les proporcionarás mayor visibilidad y harás que sea más fácil para los usuarios descubrir más sobre ellos. La plantilla en sí es bastante fácil de modificar una vez te acostumbres.
Si tu tema no dispone de una plantilla author.php, lo mejor que puedes hacer es copiar otra plantilla como page.php o archive.php y eliminar todo el código del área de contenido, es decir, mantén el código en la parte superior e inferior que da forma a tu diseño pero elimina todo el código que no necesites en la página de autor. Una vez hecho esto, deberías ser capaz de crear fácilmente tu propia plantilla autor.php siguiendo este artículo y a modo de referencia las plantillas author.php de temas predeterminados como Twenty Ten y Twenty Eleven.
Buena suerte - Kevin



