Paginación en WordPress con un tipo de publicación personalizado

5 ene 2011, 04:45:01
Vistas: 3.07K
Votos: 0

He buscado por toda la web para encontrar alguna solución, pero ninguna me funciona, ¿alguien puede ayudarme con esto y explicar qué está mal? He pasado 3 horas depurando y no encontré el problema.

Aquí está mi código:

global $paged;
global $wp_query;
wp_reset_query();

$per_page = get_option('posts_per_page');
$cat_cars = get_term_by('slug', 'cars', 'category');
$page_links_total = ceil($cat_cars->count / $per_page);
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type' => 'cars',
    'post_status' => 'publish',
    'cat' => $cat_cars->term_id,
    'orderby' => 'date',
    'order' => 'DESC',
    'posts_per_page' => $per_page,
    'paged' => $paged
);

$page_links = paginate_links(array(
            'base' => add_query_arg('paged', '%#%'),
            'format' => '',
            'prev_text' => __('«'),
            'next_text' => __('»'),
            'end_size' => 2,
            'mid_size' => 1,
            'type' => 'plain',
            'total' => $page_links_total,
            'current' => $paged
        ));

$car_query = new WP_Query($args);

Y luego llamo have_posts, the_post, etc...
Esta parte funciona, hasta que voy a la segunda página de mi paginación y no encuentro nada.

12
Comentarios

No puedo detectar ningún problema inmediato, el debugging debería ayudar a reducirlo, así que me inclino a preguntar, ¿qué hiciste para depurar?

t31os t31os
5 ene 2011 12:53:22

print_r del array, echo en cada variable, y wp_die('') - paso a paso. Es un problema con los custom post types y la paginación, pero no puedo encontrar el problema ni la forma de solucionarlo

user1147 user1147
5 ene 2011 12:56:38

@user1147: ¿Hay alguna razón por la que no usas $car_query->max_num_pages para el argumento total de paginate_links()? Probablemente esto no solucione tu problema, pero evita una costosa consulta a la base de datos.

Jan Fabry Jan Fabry
5 ene 2011 12:57:56

@Jan Fabry : Conozco acerca de man_num_pages, esta es la forma en que estaba creando la paginación para wp. ¿Cómo puedes ver qué consulta es costosa y cuál no?

user1147 user1147
5 ene 2011 13:01:40

@user1147: Quizás no sea costosa, pero creo que no la necesitas, ya que parece que puedes obtener la variable que necesitas de la consulta principal de publicaciones que de todos modos tienes que hacer.

Jan Fabry Jan Fabry
5 ene 2011 13:02:49

sí, enlaces permanentes bonitos, pero ¿debería ser un problema? La paginación debería funcionar sin importar qué tipo de enlace permanente sea, ¿verdad?

user1147 user1147
5 ene 2011 13:03:42

esto está en la página de plantilla - mi página personalizada. Solo consulta en mi página.

user1147 user1147
5 ene 2011 13:05:02

@user1147: Tal vez deberías venir a la sala de chat y podemos depurarlo allí.

Jan Fabry Jan Fabry
5 ene 2011 13:05:19

@Jan Fabry, sí tienes razón, no necesito una consulta adicional.

user1147 user1147
5 ene 2011 13:06:30

Está en mi localhost, ¿puedes darme algunos consejos sobre cómo depurarlo? Tal vez mi enfoque fue incorrecto al hacer la depuración.

user1147 user1147
5 ene 2011 13:09:59

Esto se discutió en una sala de chat, el problema simplemente desapareció.

Jan Fabry Jan Fabry
5 ene 2011 15:21:53

Parece que el problema estaba con el archivo .htaccess, cuando actualicé los enlaces permanentes, comenzó a funcionar como debería.

user1147 user1147
5 ene 2011 22:01:24
Mostrar los 7 comentarios restantes
Todas las respuestas a la pregunta 2
0

Recientemente tuve un problema similar y determiné que la causa era que cuando WordPress consulta publicaciones en una categoría, busca publicaciones con post_type igual a 'post' antes de llegar al punto donde consultas el post_type 'any' o algún tipo de publicación personalizado. Esto no causa un problema en la página 1 porque, incluso si no hay publicaciones, llama a tu plantilla. Sin embargo, en la página 2 y siguientes, no encuentra ninguna publicación con post_type 'post', por lo que carga la plantilla 404 antes de que tu plantilla tenga la oportunidad de modificar el parámetro post_type.

¿Es esto un error? Esa es una buena pregunta. Yo diría que sí porque deberías esperar que si registras la taxonomía 'category' en otros post_types, todos los post_types aparecerían en ese archivo, no solo estrictamente publicaciones.

Espero que esto ayude.

23 mar 2011 23:18:39
0

Tengo este código (limpiado) en un sitio, llamando posts de un tipo de contenido personalizado, y al final la paginación, si hay más de 10 posts:

<?php $wp_query = new WP_Query();  $wp_query->query('post_type=mycpt&showposts=10'.'&paged='.$paged); 
while ($wp_query->have_posts()) : $wp_query->the_post();?>
<h3><?php the_title(); ?></h3>
<?php the_content();?>  
<?php endwhile; wp_reset_query(); ?>

<?php if (  $wp_query->max_num_pages > 1 ) { ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&laquo;</span> Consejos antiguos', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Consejos más recientes <span class="meta-nav">&raquo;</span>', 'twentyten' ) ); ?></div>
</div>
<?php } ?>

Espero que pueda ayudar.

5 ene 2011 16:52:52