Introducción
Ya estamos de miércoles de WordPress, y hoy le toca al asunto de la paginación. Este es otro de los complementos que he estado utilizando en el sitio, hasta que descubrí que la frase hecha de «hazlo tu mismo» cobra verdadero sentido en el mundo de WordPress, PHP, HTML, CSS, …
Una de las evidencias mas claras del éxito del software libre, por lo menos en lo relacionado a Internet, es precisamente Worpdress. Esto lleva a que existan miles de complementos que permiten hacer prácticamente cualquier cosa que te puedas imaginar.
El problema de estos complementos radica en el mantenimiento. Si el complemento que instalaste tiene detrás un desarrollador preocupado por que funcione correctamente a pesar del paso de versiones de WordPress, o cuando encuentres algún error, no habrá problema. Pero en el momento que el desarrollador discontinua el mantenimiento nos encontramos en un callejón sin salida. Solución hazlo tu mismo. Aparte de esto, puedes controlar mas de cerca el rendimiento del sitio.
Numeración de páginas en Worpress
Al igual que sucede con las otras modificaciones relacionadas con WordPress, hay que hacer cambios en varios puntos distintos para conseguir el resultado que perseguimos.
Modificando Functions.php
Primero modificamos el archivo functions.php del tema hijo, al que añadiremos la siguiente función
/** * My own pagination */ function my_own_pagination($currentpage = '', $pages = '', $range = 2){ $showitems = ($range * 2)+1; global $paged; if($currentpage != ''){ $paged = $currentpage; } if(empty($paged)) $paged = 1; if($pages == ''){ global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages){ $pages = 1; } } if(1 != $pages){ echo ""; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "«"; if($paged > 1 && $showitems < $pages) echo "‹"; for ($i=1; $i <= $pages; $i++){ if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){ echo ($paged == $i)? "Página ".$i." de ".$pages."":"".$i.""; } } if ($paged < $pages && $showitems < $pages) echo "›"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "»"; echo "\n"; } }
En esta función he eliminado todas las referencias relacionadas con la traducción, dado que por ahora, solo lo voy a utilizar en un idioma.
Modificando style.css
El siguiente paso es modificar la hoja de estilos para darle el toque que buscas
.pagination { clear:both; padding:20px 0; position:relative; line-height:13px; } .pagination span, .pagination a { display:block; float:left; margin: 5px 5px 5px 0; padding:12px 14px; text-decoration:none; width:auto; color:#fff; background: #555; } .pagination a:hover{ color:#fff; background: #3279BB; } .pagination .current{ padding:12px 20px 12px 20px; background: #3279BB; color:#fff; }
Modificando blog-excerpt.php
Por último, en los archivos donde quieras añadir la paginación (recuerda hacerlo siempre en el tema hijo), tienes que añadir el siguiente código justo después de endwhile
max_num_pages > 1 ){ my_own_pagination($thepage); }?>
Conclusiones
Este cambio es realmente sencillo de realizar, y el resultado lo puedes adaptar perfectamente al estilo de tu página con no mucho esfuerzo, y sin lugar a dudas, te quitarás el problema del mantenimiento.