Paginazione WordPress con custom post type?

5 gen 2011, 04:45:01
Visualizzazioni: 3.07K
Voti: 0

Ho cercato ovunque sul web per trovare una soluzione, ma nessuna sembra funzionare nel mio caso. Qualcuno può aiutarmi e spiegarmi cosa c'è che non va? Ho passato 3 ore a debugghare senza trovare il problema.

Ecco il mio codice:

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);

E poi chiamo have_posts, the_post, etc..
Questa parte funziona, fino a quando non vado alla seconda pagina della mia paginazione e non trovo più nulla.

12
Commenti

Non riesco a individuare problemi immediati, il debug dovrebbe restringere il campo, quindi sono propenso a chiedere: cosa hai fatto per eseguire il debug?

t31os t31os
5 gen 2011 12:53:22

print_r sull'array, echo su ogni variabile, e wp_die('') - passo dopo passo. È un problema con i custom post type e la paginazione, ma non riesco a trovare l'errore e il modo per risolverlo

user1147 user1147
5 gen 2011 12:56:38

@user1147: C'è un motivo per cui non usi $car_query->max_num_pages per l'argomento total di paginate_links()? Probabilmente questo non risolverà il tuo problema, ma evita una costosa query al database.

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

@Jan Fabry : Conosco man_num_pages, questo è il modo in cui stavo creando la paginazione per wp. Come puoi vedere quale query è costosa e quale no?

user1147 user1147
5 gen 2011 13:01:40

@user1147: Forse non è costosa, ma penso che non ti serva, visto che sembra che tu possa ottenere la variabile che ti serve dalla query principale dei post che devi fare comunque.

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

sì, pretty permalinks, ma dovrebbe essere un problema? La paginazione dovrebbe funzionare indipendentemente dal tipo di permalink, giusto?

user1147 user1147
5 gen 2011 13:03:42

questo è sulla pagina del template - la mia pagina personalizzata. Solo query sulla mia pagina.

user1147 user1147
5 gen 2011 13:05:02

@user1147: Forse dovresti venire nella chat room e possiamo eseguire il debug lì.

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

@Jan Fabry, sì hai ragione, non ho bisogno di query extra.

user1147 user1147
5 gen 2011 13:06:30

È sul mio localhost, puoi darmi qualche suggerimento su come eseguire il debug, forse il mio approccio al debug era sbagliato

user1147 user1147
5 gen 2011 13:09:59

Questo è stato discusso in una chat room, il problema è semplicemente scomparso.

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

Sembra che il problema fosse con il file .htaccess, quando ho aggiornato i permalink, ha iniziato a funzionare come dovrebbe.

user1147 user1147
5 gen 2011 22:01:24
Mostra i restanti 7 commenti
Tutte le risposte alla domanda 2
0

Ho avuto un problema simile di recente e ho determinato che la causa fosse che quando WordPress esegue una query per i post in una categoria, cerca prima i post con post_type uguale a 'post' prima di arrivare al punto in cui esegui la query per post_type 'any' o un qualche custom post type. Questo non causa problemi nella prima pagina perché, anche se non ci sono post, chiama il tuo template. Tuttavia, dalla pagina 2 in poi, non trova alcun post con post_type 'post', quindi carica il template 404 prima ancora che il tuo template abbia la possibilità di modificare il parametro post_type.

È un bug? Questa è una buona domanda. Direi di sì perché ci si aspetterebbe che, se registri la tassonomia 'category' su altri post_type, tutti i post_type dovrebbero apparire in quell'archivio, non solo i post standard.

Spero che questo ti sia utile.

23 mar 2011 23:18:39
0

Ho questo codice (ripulito) su un sito, che richiama i post da un custom post type, e in fondo la paginazione, se ci sono più di 10 post:

<?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> Consigli vecchi', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Consigli più recenti <span class="meta-nav">&raquo;</span>', 'twentyten' ) ); ?></div>
</div>
<?php } ?>

Spero possa essere utile.

5 gen 2011 16:52:52