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.
Valeu! Salvou minha vida! hehe
Funcionou perfeitamente!
Cara, muito obrigado! Funcionou perfeitamente.
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);