El Cofrecito
Tecnología y algo más
  • Inicio
  • Acerca de …

Solución al problema de paginación de query_posts en WordPress

Febrero 12, 2009
Tech Tips, WordPress
260129 comentarioshttp://elcofrecito.net/wordpress/solucion-al-problema-de-paginacion-de-query_posts-en-wordpress/Soluci%C3%B3n+al+problema+de+paginaci%C3%B3n+de+query_posts+en+WordPress2009-02-12+23%3A33%3A49Felipe
Agregar a delicious

Si utilizan la función query_posts() en WordPress para obtener los posts que quieren mostrar en un página seguramente habrán notado (o no) que la páginación no funciona correctamente.

Por ejemplo si queremos mostrar todas las entradas excepto las de la categoría 45, nuestro código sería el siguiente:

< ?php
  if (is_home()) {
    query_posts("cat=-45");
  }
?>

Si este código lo usamos para mostrar las entradas de la página principal, la paginación no funcionará. Para solucionar este problema simplemente debemos 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.

Suerte!

Etiquetas: blogs, CMS, paginación, query_posts, WordPress

Entradas relacionadas

  • WordPress: cómo retrasar el envío de los posts al Feed RSS
  • Ya se puede probar Wordpress 2.6 online
  • Blogs que leí en vacaciones
  • Cobertura del WordCamp San Francisco 2009

Si te gustó el post, podés dejar tu comentario o suscribirte al feed para recibir los últimos artículos en tu email.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comentarios
Comentario por fondos Gratis el Febrero 26, 2009 @ 1:12 am

la verdad lo probe y no soluciona nada, debes atender mas a la hora de hablar de algo sino lo sabes bien

Comentario por semilla el Febrero 26, 2009 @ 6:08 am

Me encantan estos comentarios que hablan al pedo. Si no te funcionó es una lastima, te invito a leer estas tres páginas donde dan la misma solución. Template Tags/query posts, foro wordpress y query_posts Pagination problem

Comentario por semilla el Febrero 26, 2009 @ 6:09 am

Me encantan estos comentarios que hablan al pedo. Si no te funcionó a vos no significa que esté mal. Te invito a leer estas tres páginas donde dan la misma solución que la planteada por mí, inclusive una es la doc oficial de WP. Template Tags/query posts, foro wordpress y query_posts Pagination problem

Comentario por Kike Gavilan el Marzo 8, 2009 @ 1:40 am

Pues a mi me funcionó, solo necesitaba excluir una categoría y saber si estaba en la pagina 1 o no
Un saludo desde la Mixteca

Comentario por semilla el Marzo 8, 2009 @ 3:06 am

Que bueno que te sirvió. Saludos

Comentario por Julian el Abril 24, 2009 @ 1:32 am

Aún no me funcionó pero seguramente le esté errando a algo.

La verdad que el comentario del amigo "fondos gratis" que nisiquiera da nombre, lamentable. Te recomiendo que le borres el link porque estás "promocionándole" gratis su sitio de mierda.

Saludos y gracias por el artículo.

Comentario por semilla el Abril 24, 2009 @ 5:31 am

Con gusto te ayudo para solucionar tu problema. Gracias por tu comentario.

Comentario por tad el Junio 4, 2009 @ 2:44 am

Hola Felipe, use este codigo durante un tiempo, pero ahora me he dado cuenta que los post de la categoria que se quiere omitir del home, tan solo no desaparecen del mismo, sino tambien de las paginas subsiguientes, o sea las previas. Si bien es cierto se puede llegar a esos post por medio de la categoria, creo que este codigo esta a medias, no se si alguien ya reparo en eso.

En todo caso como hack rapido ayuda mucho.

Comentario por semilla el Junio 4, 2009 @ 6:17 am

Claro que van a desaparecer de las demás páginas, si el script de la página principal (index.php) en WordPress es el mismo para todas. Lo que podrías hacer es preguntar si estás en la primer página filtrar los posts de esa categoría, caso contrario mostrá todo. Podés probar con la función is_page(\\'1\\'). Se entiende?

Comentario por Mauricio el Junio 9, 2009 @ 2:07 pm

A mí me anduvo joya.

<?php if (have_posts()) : ?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("category_name=album&paged=$paged"); ?>
<?php while (have_posts()) : the_post(); ?>
<div class="album">
<div class="top"><small><?php the_time('d F Y'); ?></small></div>
<div class="content"><h1>">
<?php the_title(); ?>
</h1>
<?php the_content(); ?></div>
<div class="comm"><?php comments_popup_link('Sin comentarios &#187;', '1 comentario &#187;', '% comentarios &#187;'); ?></div>
<div class="bottom"></div></div>
<?php endwhile; ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></div>
<div class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
</div>
<?php else : ?>
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.
<?php endif; ?>

Lo único que necesitaría que se muestren 5 post por página y como soy medio nabo con esto no consigo hacerlo, pero después, una barbaridá

Comentario por Mauricio el Junio 9, 2009 @ 2:11 pm

Bah, era una tontera:

query_posts("category_name=albunes&paged=$paged&showposts=4"); ?>

muestra 4 post, que era lo que quería

Comentario por Illi.Pro el Junio 12, 2009 @ 2:36 am

Gracias por esta maravillosa solución! lo buscaba como loco!

Comentario por vitoco el Junio 18, 2009 @ 10:13 pm

saludos, yo tengo esto y no me funciona, me muestra todos los post:

query_posts("cat=-3,-29,-33,-16,-15,-1&paged=$page&posts_per_page=3"); ?>

q será???

Comentario por Sugarnines el Septiembre 1, 2009 @ 6:52 pm

Buena solución al problema. Funciona. Thanks

Comentario por evelio el Septiembre 8, 2009 @ 4:43 am

a mi criterio te falta la "d" en la variable $paged

query_posts("cat=-3,-29,-33,-16,-15,-1&paged=$paged&posts_per_page=3"); ?>

Comentario por daniel el Octubre 24, 2009 @ 11:58 pm

Gracias, probando a ver si funciona :)

Comentario por Cheche el Noviembre 5, 2009 @ 2:56 am

Felipe mi tema no vino con paginación como haria para programar la paginación?

Si me explico un poco mejor mi tema no vino con el famoso entradas anteriores y entradas siguientes.

Instale el wp-paginavi, y si me muestra la figurita para dar clicks en las paginas que quiero, pero por ejemplo doy click en la pagina 4 y me vuelve a mostrar la pagina uno, pero en la barra de direcciones dice que esta en lapagina 4, pero no lo esta, probe con otro tema y ahi si funciona bien, el problema es el tema que no vino programado la paginacion.

Espero me puedas ayudar.
Para que vean como es el problema entren a mi blog y prueben ir a otra pagina y veran que no funciona :(

Pingback por Ayuda con paginacion el Noviembre 30, 2009 @ 8:33 pm

[...] [...]

Comentario por David el Enero 30, 2010 @ 5:27 am

Me ha ido perfecto, muchas gracias!!!

Pingback por Linux-OS » El Loop de Wordpress en acción el Marzo 9, 2010 @ 10:42 pm

[...] aquí, aquí, aquí, aquí, aquí, aquí, y [...]

Comentario por FerWeb el Marzo 25, 2010 @ 11:04 pm

excelente man, estuve dos horas buscando por todo google y aqui encontre la respuesta, funciona de maravilla, gracias!!

Comentario por Felipe el Marzo 25, 2010 @ 10:14 pm

De nada, un placer!

Comentario por Daniel el Marzo 29, 2010 @ 9:50 pm

Funciona de maravilla, gracias por el tip

Comentario por Mario el Abril 20, 2010 @ 1:43 pm

Muchas gracias por tu explicacion, ha solucionado mi problema =)

Saludos.

Comentario por Nando el Mayo 4, 2010 @ 2:39 pm

he probado esta solucion de varias formas, no solo como se plantea aqui, pero sencillamente no resuelve el problema. El uso de $paged en este caso, es para no perder el numero de pagina, pero a pesar de la "correcta" paginacion sigue mostrando los mismos datos, es decir no cambia los datos obtenidos de la consulta SQL…lamentablemente no me ha funcionado y no logro dar con la solucion

Comentario por Blogfoon.com el Mayo 30, 2010 @ 8:31 pm

Hola Cheche: veo que encontraste una solución a tu problema de paginacion. Te comento que en mi theme tampoco vino nada para que funcione el PAGENAVI y tengo el mismo problema que vos. ¿Me podrías decir como lo solucionaste?
Gracias

Comentario por alvaro el Junio 22, 2010 @ 8:34 am

Lo andaba buscando, gracias!

Comentario por Perla Simeone el Julio 15, 2010 @ 7:01 pm

Vaya tio que buena…por fin!!! después de haber dado miles de cabezasos te he encontrado con la solución en la mano…!!!!

Y pensar a los miles de archivos, lineas de codigos que cambié, y ahora veo que es sólo una p#t@ linea….te agradezco por la ayuda porqué una info tan directa al problema no la habia econtrada…!!

Comentario por gabriela el Julio 18, 2010 @ 2:18 am

gracias!!!!!!!!

Deja tu comentario

(requuerido)

(requerido)


Lee "El Cofrecito" desde tu lector RSS favorito

Suscribite

 

Recibe los artículos en tu email

Buscar artículos

Ultimas entradas

  • Cronología del derrame de petróleo de BP en el Golfo de México
  • Java 4-ever: la pesadilla de los desarrolladores .Net
  • PacMan vs Mario
  • Nuestro Sistema Solar creado con CSS3
  • Descargar Lost 6×17 “The End”
  • Descargar Lost 6×16 “What They Died For”
  • Google I/O 2010 este miércoles y jueves
  • Descargar Lost 6×15 “Across The Sea”
  • Descargar Lost 6×14 “El Candidato”
  • Descargar Lost 6×13 “El último recluta”

Ultimos comentarios

  • vladimir: Don Henley -Dirty Laundry Bruce Hornsby
  • manu: como se pude desargar PACMAN!!! Urgente
  • goruse: que malo pues nimodo
  • Reyes: masi tenemos el mismo problema lo
  • Adolfo Valdez: “QUE FALTA DE ETICA PROFESIONAL DE
  • Adolfo Valdez: “QUE FALTA DE ETICA PROFESIONAL
  • lucia: son exelentes para chicoooooooooooos!!!!!!!!!!! :)
  • gabriela: gracias!!!!!!!!
  • Perla Simeone: Vaya tio que buena...por fin!!! después
  • viviana: Apoyo incondicionalmente a Diego, no te

Populares

3G Android aniversario apple campo celulares Coldplay concurso crisis Dell dinero disco diseño elecciones estadisticas eventos Firefox Firefox 3 Geek Google Humor iconos iPhone Java JavaScript linux Lost Lost 6 temporada Mac microblogging microsoft Música Oasis Películas publicidad Redes Sociales rss star wars Twitter Videos wallpapers web 2.0 windows Windows Vista WordPress
  • Categorías

    • Actualidad
    • Adsense
    • Ajax
    • Autos
    • celulares
    • Ciencia
    • CSS
    • Deportes
    • Diseño Web
    • Ecología
    • Economía
    • emprendimientos
    • Firefox
    • frases
    • futbol
    • Gadgets
    • Geek
    • General
    • hardware
    • Humor
    • Imágenes
    • informática
    • Internet
    • Java
    • JavaScript
    • Móviles
    • Música
    • My News
    • Películas
    • Personal
    • Política
    • Programación
    • Rally Mundial
    • Redes Sociales
    • SEO
    • Software
    • Tech Tips
    • Tecnología
    • Televisión
    • Tenis
    • viajes
    • Video Games
    • Videos
    • windows
    • WordPress
  • Archivo

    • Junio 2010
    • Mayo 2010
    • Abril 2010
    • Marzo 2010
    • Febrero 2010
    • Diciembre 2009
    • Octubre 2009
    • Agosto 2009
    • Julio 2009
    • Junio 2009
    • Mayo 2009
    • Abril 2009
    • Marzo 2009
    • Febrero 2009
    • Enero 2009
    • Diciembre 2008
    • Noviembre 2008
    • Octubre 2008
    • Septiembre 2008
    • Agosto 2008
    • Julio 2008
    • Junio 2008
    • Mayo 2008
    • Abril 2008
    • Marzo 2008
    • Febrero 2008
    • Enero 2008

Creado con Wordpress | WP Premium theme por WP Remix
Traducido al español por Feli
Copyright 2007. El Cofrecito. Todos los derechos reservados

  • Responsabilidad Legal y Política de Privacidad