La paginación no funciona en la plantilla de página personalizada
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?

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('« Más nuevos') ?>
<?php next_posts_link('Más antiguos »') ?>
<?php
$wp_query = null;
$wp_query = $temp;
?>

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

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

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

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.
