Urielmania

“El Mundo de Uriel… Pero la voz de todos”

Query_posts vs Paginacion en WordPress

Si alguien a utilizado la función query_posts(), por ejemplo; para  eliminar post de categorias que no quieren que aparezcan en un página, seguramente habrán notado que la páginación no funciona o tal vez no lo hallan notado como fue mi caso :s, yo me entere apenas hace unos dias de este pequeño problema, aunque tengo que reconocer que no tenia idea de que fuera esta función la que generara dicho problema.

Dicho sea de paso estuve algunas horas revizando el codigo y no veia problema en el, pero para mi desgracia, la paginacion no funcionaba, lo bueno fue que me encontre un post en http://elcofrecito.net, el cual me ilustro por que no funcionaba.

Yo tenia un codigo como este;

< ?php

if (is_home()) {

query_posts(«cat=-5»);

} ?>

Con este codigo hacemos que no se muestren los post de la categoria 5 , esto funciona, pero si por ejemplo lo ponen en el index y ahora quieren pasar a la pagina 2, o sorpresa no ocurre nada…. Pero no se preocupen esto se puede solucionar facilmente solo se tiene que agregar el parámetro paged en la llamada a query_posts():

< ?php

if (is_home()){

$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;

query_posts(«cat=-45&paged=$paged»);

} ?>

El problema se debe a que query_posts() sobreescribe el valor del offset de página, es decir que WordPress ya no sabe en que página se encuentra. Para ello debemos volver a saber en que página nos encontramos, y eso lo hacemos a través del parámetro “paged”. Así, la llamada a get_query_var(‘paged’) nos devolverá 1 si estamos en la primer página o caso contrario el valor del atributo paged. Finalmente le decimos a query_posts() en que página estamos agregando el parámetro &paged=$paged.

Una solucion bastante sencilla, pero que es  dificil de encontrar o al menos eso creo,  espero que les ayude, asi como me ayudo a mi :D.

Acerca del Autor