Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo conseguir un loop con offset y paginación

Imago voragine.net
[actualizado el ]

Parece fácil y la solución lo es por su sencillez, pero llegar a ella cuesta mucha búsqueda e intentos fallidos.

Para conseguir un loop con offset paginado utilizaremos query_posts. Si lo utilizamos asignando un valor directo al atributo offset no funcionará:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("offset=5&paged=paged");
if ( have_posts() ) : while ( have_posts() ) : the_post();
   // código del loop
endwhile;
else:
endif;
wp_reset_query();
?>

Para que funcione debemos relacionar los dos atributos de la siguiente manera:

$offset =  ( 5 * $paged ) - 5;

De manera que el loop quedaría:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$offset = ( 5 * $paged ) - 5;
query_posts("offset=$offset&paged=paged");
if ( have_posts() ) : while ( have_posts() ) : the_post();
   // código del loop
endwhile;
else:
endif;
wp_reset_query();
?>

La solución definitiva la encontré gracias a los chicos de The Boring Group. Por el camino quedaron muchas otras, entre ellas un hilo de los foros oficiales de WordPress que plantea una solución bella pero que a mí no me sirvió.

1 comentario

Dejar un comentario

*
*

 

Un trackback