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.

3 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);

Deixe um Comentário

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> <pre lang="" line="" escaped="" highlight="">