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"

Deixe uma resposta para Diogenes Roberto Cancelar resposta

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