GameStickGameStick - Criação do Layout (Photoshop)
- Implementação de CMS (Wordpress)
- Desenvolvimento em XHTML e CSS nos padrões W3C

mais informações

EmoticonBREmoticonBR - Design e confecção do site
- Programação em PHP, XHTML e CSS

mais informações

MSSaúdeMSSaúde - Criação do logotipo
- Design e confecção do site
- Programação em XHTML + CSS
- Implementação de CMS (Wordpress)

mais informações

InsoftBrasilInsoftBrasil - Criação do logotipo
- Design e confecção do site e do painel de controle para clientes
- Programação em XHTML + CSS

mais informações

Wordpress // 05.out.09

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. :)

Comentários (4)

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

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.

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

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

Concatenei a variavel e funcionou

Deixe um comentário