Madly Luv - O mLuv é um blog pessoal no qual aborda vários assuntos como design, músicas, literatura, arte, televisão etc. Desenvolvido e mantido por Ana Flávia Cador.

WP: Paginação do posts sem Plugin

Tutorial Wordpress

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*

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&aacute;ginas</span>";
         if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."' class='current'>&laquo;</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'>&raquo;</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:

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

Veja também...

Vida de Freelancer: Quando o design não é o suficiente
Um dia em Piri: Reserva Vargem Grande
Resenha: Sombras Super Shock, da ColourPop
¬¬ zZz x_x o_O ^^ T_T ;D :x :S :P ::teary:: ::sweat:: ::stress:: ::rolleyes:: ::love:: ::cool:: ::blush:: ::attention:: ::angry:: :) :( ._. *o* *O_O


6 Comentário(s)

(6 pelo blog e pelo facebook)
  • Rodrigo Cardoso
    16 . 08 . 2016

    Olá, no blog que estou fazendo mas não funciona, a minha intenção é colocar paginação no post. Já incluí o código no function.php no style.css e também no archive.php. Não dá erro, nem aparece nada. Sou novo com wordpress, será que estou colocando o código nos arquivos e lugares errados?

    Responder

    • Aninha
      Visitar blog
      17 . 08 . 2016

      Rodrigo, talvez você esteja colocando o código no lugar errado. Tente coloca-lo logo depois do fechamento das tags de loop do post. Sugiro também que dê uma olhada nos links mencionados. Talvez o código do tutorial da Tamara dê certo contigo, porque o dela é diferente a função, e ela disse que fez uma correção pra ele funcionar na listagem de artigos.

      Responder

  • Kellmon
    10 . 01 . 2016

    Paginação , pegue cod que você colocou no blog mas no meu
    não apareceu nada kkk..

    Responder

  • Renan
    Visitar blog
    03 . 11 . 2014

    Oi Aninha, ótima dica!
    Apenas uma correção: na última linha do seu código está escrito assim: echo "n";
    A letra "n" podemos apagar, ela está perdida ali.

    beijos.

    Responder