Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

_SDinfo

Paginação sem plugin no WordPress

Recommended Posts

Olá pessoal.

Situação, possuo um blog em wordpress que está recebendo adaptações e tratamento visual. Agora estou com problemas para criar uma paginação personalizada, meu objetivo é fazer está, sem instalar plugins.

 

O código abaixo é inserido ao final do arquivo functions.php:

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='pagination'>";
           if($paged > 2 && $paged > $range+1 && $showitems < $pages) {
    echo "<a href='".get_pagenum_link(1)."'>« Primeira</a>";
    }
           if($paged > 1 && $showitems < $pages) {
    echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Seguinte</a>";
    }
           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 && $showitems < $pages) {
echo "<a href='".get_pagenum_link($paged + 1)."'>Próxima ›</a>";
}
       if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) {
echo "<a href='".get_pagenum_link($pages)."'>Última »</a>";
}
       echo "</div>\n";
       }
}

 

No arquivo index.php (do meu tema), logo abaixo de:

...endwhile;

               else :
                   get_template_part('post', 'noresults');
               endif;
?>

 

adiciono:

<?php post_pagination();?>

 

O código anterior já recebeu um tratamento, pois apresentava alguns erros.

 

Meu objetivo é criar uma paginação como o modelo de exemplo da página: http://www.meuwordpress.com/adicionar-paginacao-wordpress-sem-plugin/

 

Alguém poderia me ajudar a corrigir este código e modificá-lo de tal forma que atenda as necessidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem o post em sequencia, mas não consigo editar o anterior. Depois de muito batalhar consegui dar um jeito na função de paginação:

 

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='paginar'>";
echo "<span class='current'>Página " . $paged . " de " . $pages . "</span>";
           if($paged > 2 || $paged > $range+1 || $showitems < $pages) {
    echo "<a href='".get_pagenum_link(1)."'>« Primeira</a>";
    }
           if($paged > 1 || $showitems < $pages) {
    echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Seguinte</a>";
    }
           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)."'>Próxima ›</a>";
}
       if ($paged < $pages-1 ||  $paged+$range-1 < $pages || $showitems < $pages) {
echo "<a href='".get_pagenum_link($pages)."'>Última »</a>";
}
       echo "</div>\n";
       }
}

 

O problema agora é que a função lista todas as páginas, ou seja, se tiver 200 páginas ele vai listar de 1 até 200. Gostaria que fossem exibidos apenas 6 valores (1 2 3 4 5 6) após isso tivéssemos (...).

 

Quando eu selecionar o número 6 ai sim aparecer o 7 e assim por diante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.