Contenido

query_posts() y el problema de la paginación

13 Ago

+ 12

Hace ya mucho tiempo, hablamos de las maravillas que se podían hacer con query_posts(). Esta función, nos permite personalizar los posts que queremos que aparezcan, para ello disponemos de una buena batería de parámetros con los que podemos personalizar la query que nos obtiene de la base de datos.

Los que hemos lidiado con ella, somos conscientes del problema que tiene dicho método con la paginación ya que esta función es aplicada siempre y repite una y otra vez los resultados de la primera petición.

Para solventar dicho problema debemos recurrir a una condición para que nos informe de en que página nos encontramos, y así condicionar, más aún, nuestra query_posts();

query_posts() sin paginación

<?php if (have_posts()) : ?>
    <?php query_posts("category_name=somecat"); ?>
        <?php while (have_posts()) : the_post(); ?>

Este ejemplo, muestra el método sencillo de usar esta función, mediante query_posts() condicionaremos la petición para que nos devuelva los posts de la categoría cuyo nombre sea “somecat“.

query_posts(); con paginación

<?php if (have_posts()) : ?>
     <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
            query_posts("category_name=somecat&paged=$paged"); ?>
        <?php while (have_posts()) : the_post(); ?>

Como podemos ver en negrita, la única modificación es que añadimos la paginación por defecto a nuestra query, comprobando con get_query_var() la existencia de la variable paged, seleccionamos la página en la que se encuentra la query y en caso de no existir, informaremos que nos encontramos en la página 1, mostrando los primeros resultados.

Via

Buen post, como siempre.
La verdad es que llevas un ritmo diabolico de posteos esta semana,no hay quien te pare, jeje.

Gracias por la info, la acabo de usar en un theme que estoy editando.
Saludos

Cuanto más php veo más me doy cuenta que pasarme a python (con django) es una gran elección, te aseguro por experiencia propia que cualquier aplicación grande hecha en php degenera y se convierte en un chapuza, porque php no está hecho para proyectos grandes, está hecho para proyectos pequeños y un desarrollo rápido, pero a la que tengas que hacer muchos cambios te darás cuenta de lo poco mantenible que se convierte la aplicación.

Buena solución. Lo malo es que no funciona cuando le das un offset al query_posts(). El problema persiste y aún no le encuentro solución.

Interesante, en mi caso lo habia solucionado agregando $query_string

query_posts($query_string . “&cat=NUMEROAQUI”);

@Xyborg: Si, más o menos es lo mismo. get_query_var() es un método para coger la variable paged (o cualquiera enviada por parámetro) a la página.

@aNieto2k si, es bueno contar con mejores alternativas tambien, como no posteaste esto hace semanas atras! jaja, que me tuvo loco un buen rato jeje.

@Xyborg: No, sobre el problema de la paginación es la primera vez que comento algo.

Saludos

Como siempre grandes tutoriales, me has resuelto el problemon que me cargaba, te agradezco muchisimo el tiempo que dedicas y la informacion y tutoriales de gran calidad que haces.

he aprendido mucho en tu blog. GRACIAS

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.


Cerrar
Enviar por Correo