13:20 hrs. ~ 0 Comments

Solución a la paginación de post en nuestras plantillas de pagina de WordPress

Estos días también estaba envuelto en buscar soluccion en el problema de “paginación” de post que saco en una plantilla de pagina en wordpress, como siempre la solución es muy simple, apenas una linea de código mas. Esta vez el codex de WordPress tampoco ayudo mucho, sin embargo gracias a la comunidad que hay detrás lo he podido resolver.  Suponemos que tenemos algo así, cuando estamos sacando nuestras entradas:

/*Ojo estoy escribiendo a mano, no hagais copy & paste */
query_posts("category_name=Recipes&showposts=5");
while (have_posts()) : the_post();
   ---
endwhile;

Con esto teóricamente sacamos los post, pero ahora queremos añadir la típica paginación, algo por el estilo: pagina siguiente y pagina anterior. Para ello utilizamos otra función:

/*Ojo estoy escribiendo a mano, no hagais copy & paste */
query_posts("category_name=Recipes&showposts=5");

echo "<div class=\"navigation\"><p>"
   posts_nav_links(' &#183 ');
echo "</p></div>";

while (have_posts()) : the_post();
   ---
endwhile;

Con esto añadimos enlaces de pagina anterior y siguiente, separados por un separador, que en este caso es algo así como un punto. El problema aquí es que la paginación no funciona, sin embargo arriba veremos como cambia el enlace. Algo falla…para arreglarlo modificamos el código de este modo:

/*Ojo estoy escribiendo a mano, no hagais copy & paste */

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("category_name=Recipes&showposts=5&paged=$paged");

echo "<div class=\"navigation\"><p>"
   posts_nav_links(' &#183 ');
echo "</p></div>";

while (have_posts()) : the_post();
   ---
endwhile;

Aquí ojo, a veces me funciona con get_query_vars(‘page’) en vez de con ‘paged’. Es raro, pero aun no he averiguado el por que del asunto. Con esto debería de funcionar perfectamente. Para el que no entiende la expresion de obtencion de la variable $paged, esto es idéntico:

if (isset(get_query_var('paged'))) {
   $paged = get_query_var('paged');
} else {
   $paged = 1;
}

Personalmente las simplificaciones de código no me emocionan, dificultan su lectura en algunas cosas. Prefiero antes un código elegante sin las fricadas de este tipo. Pero para gustos los colores…como curiosidad teneis los estandares de codificación de wordpress.

Leave a Reply