23.06.2010

Resolvendo problemas de paginação no WordPress

Um problema que muitos sofrem é a paginação dos posts quando se altera um Loop no WordPress. Por exemplo, geralmente usamos a função query_posts antes do Loop para que o WordPress mostre uma determinada categoria, ou uma determinada quantidade de posts. O problema é que quando usamos o query_posts, o WordPress é afetado, e assim a paginação não funciona corretamente. O usuário clica em “Próximos Posts”, e ele repete os mesmo posts novamente.

A solução é incluir um código no Loop, que irá fazer a paginação funcionar corretamente.

Primeiro, entre em uma das páginas do seu tema (index.php por exemplo). Localize no Loop, o código:

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

Se você adicionou o query_posts, ele deve está algo assim:

<?php query_posts(’cat=10&showposts=6′); ?> 

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

Para solucionar o problema, substitua o código por:

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

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

* Nota: É importante que você mantenha as aspas duplas na função query_posts, pois só assim ele irá funcionar.

E está pronto!

Atualização: Caso a maneira acima não funcione…

Já aconteceu comigo de o código acima não funcionar, e então eu tive de procura outra maneira de resolver esse problema. Segue o código:

<?php 
global $query_string; parse_str( $query_string, $my_query_array ); 
$paged = ( isset( $my_query_array['paged'] ) && !empty( $my_query_array['paged'] ) ) ? $my_query_array['paged'] : 1; 

query_posts("cat=10&showposts=6&paged=$paged"); 
?> 

Espero que uma dessas soluções possa ajuda.

28 respostas a "Resolvendo problemas de paginação no WordPress"

  1. Elder Silvestre disse:

    Valeu! Salvou minha vida! hehe
    Funcionou perfeitamente!

  2. Mozart disse:

    Cara, muito obrigado! Funcionou perfeitamente.

  3. Willy Chagas disse:

    Valeu, funcionou.

    Lembrando que pra quem esta passando os valor por um array fica assim:

    $args=array(
    ‘cat’ => 10,
    ‘showposts’ => 6′,
    ‘paged’ => $paged
    );

    query_posts($args);

  4. Gustavo Lucas disse:

    Graaaande ajuda Ruan!
    Valeuzaço man!

    Abraço

  5. AEE!!! Vlw ai!! salvou minha pele! hahahah
    10 kra!

  6. Breno Mol disse:

    Vlw Ruan, vlw d+ irmao. abraços

  7. Wallace Erick disse:

    Fala Ruan, beleza? Parabéns, pelo artigo.
    Não sei se vai te ser útil, mas com esse código é possível criar a paginação na lsitagem sem a utilização de plugins, se quiser pode atualizar com esse treço o seu post também.
    Abraços


    function pagination($prev = '«', $next = '»') {
    global $wp_query, $wp_rewrite;
    $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
    $pagination = array(
    'base' => @add_query_arg('paged','%#%'),
    'format' => '',
    'total' => $wp_query->max_num_pages,
    'current' => $current,
    'prev_text' => __($prev),
    'next_text' => __($next),
    'type' => 'plain'
    );
    if( $wp_rewrite->using_permalinks() )
    $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );

    if( !empty($wp_query->query_vars['s']) )
    $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
    echo paginate_links( $pagination );
    };

  8. Genemes disse:

    Ruan achei excelente o seu artigo, foi de grande valia para mim. Muito obrigado.

  9. Reginaldo disse:

    Cara, perfeito, ajudo muito aqui!
    Agradecido mesmo.
    Abraço!

  10. Sandra disse:

    Quero muito agradecer por esse post, eu sou novata no wordpress e php apesar de ter feito o curso de WP….quebrei a cabeça o dia inteiro pra solucionar, entrando em varios fóruns e finalmente encontrei esse que salvou meu dia!!!!

    Parabéns, só tenho que elogiar e agradecer pelo tutorial…excelente galera…acho que isso era a duvida de mtos que nao conseguiam sucesso antes!!!

    Vlw

  11. Maxwell disse:

    Não funcionou pra mim… À 2 semanas estou com esse problema. A paginação só não rola na página inicial. Já nas categorias ele funciona normalmente. Alguém pode me ajudar?

  12. Aqui tambem não funcionou no WP 3.5
    As duas opções, ele até pagina mais não exibe os resultados da Query

  13. Muito bom cara, tive um problema parecido

  14. Diogenes Roberto disse:

    Beleza. Depois de procurar em dezenas de sites eis que surge a solucao. Muito Obrigado mesmo.

  15. virgilio disse:

    Obrigado…. após longas pesquisas na net…. deu certo :)

  16. Silvan de Jesus disse:

    Valeu!!! Funcionou perfeitamente!

  17. Robson disse:

    Muito bom, parabéns. Estava o dia inteiro tentando resolver esse problema e não conseguia, vi muitos tópicos em vários fóruns e nada. Obrigado por compartilhar a solução desse problema. Deus abençoe grandemente!

  18. Navarro disse:

    Muito obrigada!
    Já estava perdendo o sono tentando resolver isso!! ((((:

  19. Henrique Aranha disse:

    EU TE AMO!!

  20. Renan Ledo disse:

    Muito obrigado cara

  21. Vitor Hall disse:

    Vlw cara, me ajudou muito!!!!

  22. Michael Felipe disse:

    No meu caso funcionou o último exemplo. Obrigado :)

  23. Cesar disse:

    Funcionou porr* UHAEAEUHuhae vlw ae parceiro

  24. Jośe disse:

    Perfeito, valeu meu querido, me ajudou muito, obrigado por compartilhar

  25. Leonardo disse:

    Cara, obrigado, você salvou minha vida.

  26. Sara Souza disse:

    Salvou minha vida! rs Muito obrigada!

  27. Raphael disse:

    Cara, depois de 7 anos desse post ele ainda resolve e salva vidas… salvou meu freela de muita gente… rss
    Muito obrigado!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *