Eu sempre tive problemas com paginação nos posts. Já usei paginação através do plugin PageNavi, Paginator até ao mais simples dos códigos (o post "anterior e próximo"). Eu até me envergonho por não ter descoberto antes a função de paginação que fica igualzinho ao PageNavi e não é necessário de plugin algum! Comentei no twitter sobre o meu desespero e a @tamaradantas me deu uma luz sobre isso falando que existia uma função para isso sim! Não deu outra e busquei no Google, o nosso grande oráculo da internet, rs. Encontrei o código básico e finalmente conseguir ter a paginação que eu sempre quis ter sem usar nenhum pluguezinho se quer, dê uma olhada como ficou *u*
![](https://i.imgur.com/wwSAd.jpg)
Para ter esse resultado, procure o arquivo chamado functions.php nos arquivos de seu tema atual e adicione o seguinte código:
function post_pagination($pages = '', $range = 4) { $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { echo "<div class='paginacao'><span>Páginas</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."' class='current'>«</a>"; if($paged > 6 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>1</a> <span class='current'>...</span>"; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>"; } } if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<span class='current'>...</span> <a href='".get_pagenum_link($pages)."'>$pages</a>"; if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."' class='current'>»</a>"; echo "</div>"; } }
Na primeira linha em $range = 4 troque para o 4 para o número de páginas que você quer que apareça na paginação. Mas lembre-se de que se for para uma página muito avançada irá aparecer 4 páginas antes e 4 páginas depois, como no exemplo abaixo:
![](https://i.imgur.com/1K10g.jpg)
Depois de salvada a função, adicione este CSS em style.css de seu tema e modifique as cores da maneira que quiser.
/**** post pagination wordpress - madlyluv.com ***/ .paginacao { clear:both; padding: 20px 0; position:relative; } .paginacao span, .paginacao a { display:block; float:left; font: normal 14px georgia, verdana; background: #F5F5F5; padding: 4px 7px 4px 7px; margin: 1px 2px 0 2px; text-transform: capitalize; color: #AAA; } .paginacao span { font: bold normal 14px georgia, verdana; } .paginacao .current, .paginacao .current a { color: #BBB; background: #f0f0f0; padding: 4px 7px 4px 7px; margin: 1px 2px 0 2px; font: bold italic 14px georgia, verdana; text-transform: capitalize; }
Por último, vá em index.php e adicione o seguinte código abaixo de <?php endwhile; ?>
<?php post_pagination();?>
O tutorial original é do site kriesi.at, cheio de mimimis e explicações difíceis 😒 mas fiz algumas modificações para deixar do jeitinho que eu queria de uma maneira mais simplificada e útil =D
A Tamara também fez um tutorial sobre paginação de posts assim como eu, mas o código dela é diferente. Caso não dê certo este meu código, dê uma passada no tutorial dela. ;D