La paginación no funciona en la plantilla de página personalizada

23 oct 2012, 21:27:40
Vistas: 14.4K
Votos: 2

Posible duplicado:
La paginación no funciona con un bucle personalizado

Al parecer este es un problema muy común. Ya hay muchas personas ofreciendo soluciones para esto. Pero después de horas de búsqueda aún no he encontrado la solución. Espero que alguien pueda darme una pista aquí.

Actualmente he creado una página para mostrar todas las entradas de mis tipos de entrada personalizados. Aquí está el código de mi plantilla de página:

<?php

 /*
Plantilla Nombre: página de tipo de entrada personalizado
*/
get_header(); ?>

<div id="primary">
  <div id="content" role="main">

    <?php   
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

    $args = array(
            'post_type'=>array('car','bicycle'),
            'posts_per_page'=> 20,
            'page'=>$paged,
            );

    $the_query = new WP_Query( $args);
    $num =  $the_query->found_posts;

     if($the_query){
     if ($the_query->have_posts()) : echo $num;
         while ($the_query->have_posts()) : $the_query->the_post();
          echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
         endwhile;

        next_posts_link( 'Siguiente', $the_query->max_num_pages );
        previous_posts_link('Anterior', $the_query->max_num_pages ); 


     else : $return_string =  'sin resultados';  

     endif; wp_reset_query();  wp_reset_postdata();
    }

   ?>

        </div><!-- #content -->
    </div><!-- #primary -->

El problema aquí es que cuando hago clic en Siguiente (o Anterior), el resultado de la consulta sigue siendo el mismo. Noté que la URL muestra el número de página (page/2/, o page/3/... etc). Y found_posts() sigue siendo el mismo en cada página, todo parece correcto, solo que el contenido no muestra el objeto de consulta correcto.

También intenté agregar 'max_num_pages'=>2 a los argumentos de wp_query, pero aún no ayuda.

¿Alguna idea?

1
Comentarios

Por favor, busca antes de publicar preguntas. Esta ya ha sido preguntada y respondida muchas, muchas veces.

Chip Bennett Chip Bennett
24 oct 2012 00:27:01
Todas las respuestas a la pregunta 2
5

Prueba lo siguiente y observa cómo te va..

<?php 
  global $paged;
  global $wp_query;
  $temp = $wp_query; 
  $wp_query = null; 
  $wp_query = new WP_Query(); 
  $wp_query->query('posts_per_page=10&post_type=your_post_type'.'&paged='.$paged);
  while ($wp_query->have_posts()) : $wp_query->the_post(); 
?>

<!-- haz aquí la salida de tu bucle, título, contenido, etc. -->

<?php endwhile; ?>

    <?php previous_posts_link('&laquo; Más nuevos') ?>
    <?php next_posts_link('Más antiguos &raquo;') ?>

<?php 
  $wp_query = null; 
  $wp_query = $temp; 
?>
24 oct 2012 00:00:13
Comentarios

Lo intenté, pero no funciona correctamente.

dev-jim dev-jim
24 oct 2012 17:41:29

@tc.k Pequeña edición, añadiendo dos globales. Inténtalo de nuevo y dime cómo te va esta vez.

Adam Adam
24 oct 2012 17:43:56

Sin suerte. El problema es que la consulta de búsqueda mantiene los mismos resultados en cada página paginada.

dev-jim dev-jim
24 oct 2012 17:50:45

Ok, finalmente encontré el problema. Fue un error tonto, resulta que necesito usar paged y no page en el argumento.

dev-jim dev-jim
24 oct 2012 18:26:37

@tc.k Así es. Tampoco noté que faltaba la d en tu argumento, pero sí, como regla es 'paged='.$paged. Me alegra que ahora todo funcione para ti. Mucho éxito.

Adam Adam
24 oct 2012 18:37:50
2

Del codex http://codex.wordpress.org/Using_Permalinks

A veces la navegación a la segunda página (y siguientes) de entradas no funciona como se espera. Tu página puede generar un enlace a una página con uno de estos URIs:

http://www.example.com/page/2/
http://www.example.name/category/categoryname/page/2/
http://www.example/year/month/day/page/2/
http://www.example/year/month/page/2/

El resultado de hacer clic en uno de esos enlaces es que la página se carga con todos los elementos circundantes (cabecera, pie de página, barra lateral), pero en lugar de una página de entradas, aparece un mensaje de error: "Lo sentimos, no hay entradas que coincidan con ese criterio."

Esto se debe a un fallo en el archivo .htaccess que genera WordPress. Para solucionarlo, borra el contenido de tu archivo .htaccess y vuelve a crearlo.

23 oct 2012 21:33:55
Comentarios

Lo leí hace solo 2 días ;)

Mridul Aggarwal Mridul Aggarwal
23 oct 2012 21:36:58

@Mridul Aggarwal, probé tu método, pero aún no funciona.

dev-jim dev-jim
23 oct 2012 21:47:24