Corrigindo bug na paginação do query_posts()

Corrigindo bug na paginação do query_posts()

Quem utiliza a tag query_posts() no WordPress, algum dia já deve ter reparado que, ao usá-la, a paginação deixa de funcionar. Ou seja, ao clicar em “Próxima Página” a página que será carregada exibirá os mesmos posts da primeira.

Pesquisando sobre o assunto, achei uma solução simples e funcional, que explicarei logo a seguir. Mas antes de mais nada, para quem não conhece os query_posts(), segue uma explicação rápida:

Query_posts()

O query_posts() pode ser usado para controlar quais posts serão exibidos no Loop. Por aceitar vários tipos de parâmetros, ele pode ser utilizado de diversas maneiras diferentes.

Com isso você pode personalizar as entradas do seu blog para, por exemplo, exibir apenas posts de uma categoria específica em sua home.

Principais parâmetros
Para conhecer todos os parâmetros, acesse a página Template Tags/Query_Posts no codex do wordpress.

  • cat=3 » Exibe posts da categoria com id 3
  • cat=-3 » Não exibe posts da categoria com id 3
  • category_name=noticias » Exibe posts da categoria notícias
  • tag=tecnologia » Exibe posts com a tag tecnologia
  • author=3 » Exibe posts do usuário com id 3
  • author=-3 » Não exibe posts do usuário com id 3
  • posts_per_page=10 » Exibe 10 posts por página

Exemplo
Exibir 10 posts por página da categoria 4


<?php if(have_posts()) : query_posts('cat=4&posts_per_page=10'); ?>

<?php while ( have_posts() ) : the_post(); ?>

// aqui vai o código do post

<?php endwhile; ?>

<?php endif; ?>

.

Corrigindo o bug

Para corrigir o bug da páginação é muito simples, basta substituir essa linha do Loop:


<?php if(have_posts()) : query_posts('cat=4&posts_per_page=10'); ?>

Por essa:


<?php if (have_posts()) : ?>

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("cat=4&posts_per_page=10&paged=$paged"); ?>

.
Bom galera, por enquanto é isso. Espero ter ajudado e, como sempre, qualquer dúvida/problema é só deixar um comentário. :)

This entry was posted in Wordpress and tagged , , . Bookmark the permalink.

5 Responses to Corrigindo bug na paginação do query_posts()

  1. dubxenon says:

    Opa, eu tive um problema parecido com esse, postei aqui e ninguém até agora soube ajudar. Vê se você consegue:

    http://br.forums.wordpress.org/topic/query_post-conflito-com-pagenavi

    valew

  2. Stenio says:

    Não funcionou kra!!!
    Na solução você não especificou o While, está correto. Mas de toda forma, tentei com While e não. E sem While nem mostra post algum.

    E da forma explicada com While, você avança as páginas mas elas não mostram os posts sequentes.

  3. Stenio says:

    Opa, desculpe que não percebi a organização do código e não percebi a parte do While…

  4. Stenio says:

    Consegui solucionar o problema!!! coloquei a linha assim:
    query_posts(‘cat=4&posts_per_page=10&paged=’.$paged.”); ?>

    Concatenei a variavel e funcionou

  5. Junio Cesar says:

    Era exatamente isso que eu tava procurando!

    Uma forma de colocar paginação no meu blog.

    Valeu mano, ótimo artigo.

    ;)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>