Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Paginación numérica con offset en WordPress

Imago voragine.net
[actualizado el ]

Ya publicamos hace unos meses una solución para combinar los parámetros paged y offset de un loop con query_posts en WordPress. Publicamos ahora otra solución más sencilla que funciona a la perfección con una paginación de previo-siguiente o numérica.

En el caso de una paginación numérica basta modificar el parámetro total de la función paginate_links(), que indica el total de páginas en las que se partirá el loop. WordPress calcula las páginas, él solito, dividiendo el total de posts del loop entre el valor que hayamos asignado al parámetro showposts (en versiones de WordPress anteriores a la 2.1) o posts_per_page en query_posts.

Para un loop como el siguiente:

global $query_string;
query_posts( $query_string . "&posts_per_page=5&offset=5" );

Definiremos total de la siguinete manera:

$total = $wp_query->max_num_pages - 1;

En vez de la manera usual:

$total = $wp_query->max_num_pages;

De manera que la paginación numérica, mediante paginate_links, quedaría:

global $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

$total = $wp_query->max_num_pages - 1;
$pagination = array(
        'base' => '%_%',
        'format' => '',
        'total' => $total,
        'current' => $current,
        'show_all' => false,
        'prev_text' => __('Anterior'),
        'next_text' => __('Siguiente'),
        'type' => 'plain',
);

if( $wp_rewrite->using_permalinks() )
        $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . "page/%#%/", 'paged');

if( !empty($wp_query->query_vars['s']) )
        $pagination['add_args'] = array('s'=>get_query_var('s'));

echo paginate_links($pagination);

Otras soluciones que nos han inspirado, aunque no nos han acabado de funcionar, pero quizás a ti sí:

ACTUALIZACIÓN 2 de marzo de 2012: La solución de offset con paginación numérica que mejor me funciona combina la receta que comento arriba de modificar la variable $total que define las páginas en las que se dividirá el loop, con la que publiqué previamente a cerca de cómo conseguir un loop con offset y paginación. Para que la cosa funcione hay que aplicar ambas recetas.

Dejar un comentario

No hay comentarios en esta entrada.
*
*

 

No hay trackbacks