Ya sé que la mayoría de los que me leéis sois adictos a Pagenavi, ese maravilloso y bien construido plugin que ofrece paginación a nuestro WordPress de manera sencilla.
Pero ¿se puede añadir paginación sin instalar plugins? …
Pues claro, igual que añadimos paginación de comentarios sin plugin podemos añadir paginación a nuestra web sin usar Pagenavi o algún otro plugin, solo hay que usar una función interna de WordPress que lleva ahí desde la versión 2.1, paginate_links y sus posibles parámetros.
El código que nos ofrecerá esta maravilla es el siguiente:
// obtenemos el total de páginas global $wp_query; $total = $wp_query->max_num_pages; // solo seguimos con el resto si tenemos más de una página if ( $total > 1 ) { // obtenemos la página actual if ( !$current_page = get_query_var('paged') ) $current_page = 1; // la estructura de “format” depende de si usamos enlaces permanentes "humanos" $format = empty( get_option('permalink_structure') ) ? '&page=%#%' : 'page/%#%/'; echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => $format, 'current' => $current_page, 'prev_next' => True, 'prev_text' => __('« Anterior'), 'next_text' => __('Siguiente »'), 'total' => $total, 'mid_size' => 4, 'type' => 'list' )); }
La explicación de lo que hacen los distintos parámetros es la siguiente:
base
Esta es la ruta de los enlaces de número de página, sin incluir la parte específica de paginación de la URL. Los caractes%_%
se sustituirán en esa URL para la pa rte específica de la página de la URL.format
Esta es la parte de la «página» de la URL.%#%
se sustituye pro el número de página.. Por ejemplo,page/%#%
o?page=%#%
.total
El numéro total de páginas disponibles.current
El número de la página actual.show_all
Lista todos los enlaces a páginas en vez de limitarlo a un cierto número de enlaces a izquierda o derecha de la página actual..prev_next
Incluye los enlaces a «Anterior» y «Siguiente» (si procede), como harías normalmente con la funciónprevious_posts_link()
. Solo funcionará si también ponemos previamente la funciónprev_next
en «True».prev_text
ynext_text
Texto que irá dentro de los enlaces «Anterior» y «Siguiente».end_size
El número de enlaces a páginas a mostrar al final. Por defecto está a1
(por ejemplo: 1 2 3 … 10).mid_size
El número de páginas a mostrar en cada lado de la página actual. Por defecto está puesto a2
(ejemplo: 1 … 3 4 5 6 7 … 10).type
Te permite especificar el estilo de salida. Por defecto es «plain», o sea, una lista de enlaces. También puede establecerse a formatos de «list» (o sea, enlaces englobados enul
yli
) o de «array» (lo que mostrará una selección de enlaces a páginas que pueden definirse como tu quieras).- También puedes añadir argumentos y fragmentos de query, a tu gusto.
El código del ejemplo generará un HTML como este:
<ul class='page-numbers'> <li><span class='page-numbers current'>1</span></li> <li><a class='page-numbers' href='http://miwordpress.com/page/2/'>2</a></li> <li><a class='page-numbers' href='http://miwordpress.com/page/3/'>3</a></li> <li><a class='page-numbers' href='http://miwordpress.com/page/4/'>4</a></li> <li><a class='page-numbers' href='http://miwordpress.com/page/5/'>5</a></li> <li><span class='page-numbers dots'>...</span></li> <li><a class='page-numbers' href='http://miwordpress.com/page/10/'>10</a></li> <li><a class='next page-numbers' href='http://miwordpress.com/page/2/'>Next »</a></li> </ul>
Una vez tengas el código a tu gusto solo tienes que incluirlo – preferentemente – en las primeras líneas del archivo footer.php
de tu tema activo.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Fernando, me tira un error en esta linea: $format = empty( get_option('permalink_structure') ) ? '&page=%#%' : 'page/%#%/';
A mi tambien me paso lo mismo.. alguna solucion porfa… estamos en linea.. ayuda.. se ve bueno. gracias. !!!!!!
Para solucionar la linea de $format agreguen esto estas lineas:
$permalink_structure = get_option('permalink_structure');$format = empty( $permalink_structure ) ? '&page=%#%' : 'page/%#%/';
El único problema que tuve con esta función y que todavia no pude corregir es que al hacer una busqueda no me detecta que no es un "pretty permanlink" (?s=palabra) y me agrega el paginado del tipo /page/%#%/. Esto hace que me tire un error
Hola, cómo podría utilzar esta paginación pero que se muestre sólo en categoría de post que yo le indique?
query_posts(array(‘category_name’ => $slug_name_category,’posts_per_page’=>2 ))
reemplazas la variable con el slug de la categoria
Buenas tengo un problema con esto: puedo paginas post de una categoria productos por ejemplo asi: , sale normal pero no puedo paginas los productos de una categoria en especifica, claro mi categoria es una taxonomia :http://miweb.com/category/aceite-de-temple/page/2, me muestra ERROR 404, porfavor alguien que me pueda ayudar, gracias de antemano
Yo pensaba que wordpress paginaba por defecto. En mi blog salen todos los artículos uno detrás del otro. ¿Esto es así? De serlo, acabará siendo una página infinita. Supongo que en algún momento wordpress paginará los artículos, o no?
amigo, buen dia! como puedo modificar la paginacion pero dentro del backend en wordpress! es decir, yo necesito que en la pagina de productos de woocomerce se muestren 50 o 100 productos, no 20, es que llevo rato googleando pero todo lo que consigo es para la paginacion de post ya en las paginas publiadas, yo necesito es que me muestre mas produtos para poder modificarlos mas rapidamente, en este caso en particular necesito borrar todos los productos de una categoria! y consegui plugins para editarlas pero no permiten borrarlas!! por eso me serviria mucho poder escoger mas de 20 cada vez q borre!.. de ante mano muchas gracias por su ayuda