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