Paginare WordPress cu tip personalizat de postare?

5 ian. 2011, 04:45:01
Vizualizări: 3.07K
Voturi: 0

Am căutat peste tot pe internet pentru a găsi o soluție, dar niciuna nu funcționează pentru mine. Poate cineva să mă ajute cu asta și să-mi explice care este problema? Am petrecut 3 ore depanând și nu am găsit problema.

Iată codul meu:

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

Și mai apoi apelez have_posts, the_post, etc..
Această parte funcționează, până când navighez la a doua pagină a paginării mele și nu găsesc nimic.

12
Comentarii

Nu văd nicio problemă imediată, depanarea ar trebui să rezolve, așa că sunt tentat să întreb, ce ai făcut pentru a depana?

t31os t31os
5 ian. 2011 12:53:22

print_r array, echo pe fiecare variabilă și wp_die('') - pas cu pas. Este o problemă cu custom post types și paginare, dar nu găsesc problema și nici soluția

user1147 user1147
5 ian. 2011 12:56:38

@user1147: Există vreun motiv pentru care nu folosești $car_query->max_num_pages pentru argumentul total al funcției paginate_links()? Asta probabil nu va rezolva problema, dar salvează o interogare costisitoare la baza de date.

Jan Fabry Jan Fabry
5 ian. 2011 12:57:56

@Jan Fabry : Știu despre man_num_pages, acesta era modul în care cream paginarea pentru wp. Cum poți vedea care interogare este costisitoare și care nu?

user1147 user1147
5 ian. 2011 13:01:40

@user1147: Poate nu este costisitoare, dar cred că nu ai nevoie de ea, deoarece se pare că poți obține variabila de care ai nevoie din interogarea principală de postare pe care trebuie să o faci oricum.

Jan Fabry Jan Fabry
5 ian. 2011 13:02:49

da, permalink-uri frumoase, dar ar trebui să fie o problemă? paginarea ar trebui să funcționeze indiferent de tipul de permalink, corect?

user1147 user1147
5 ian. 2011 13:03:42

aceasta este pe pagina de șablon - pagina mea personală. Doar interogare pe pagina mea.

user1147 user1147
5 ian. 2011 13:05:02

@user1147: Poate ar trebui să vii în camera de chat și putem depana acolo.

Jan Fabry Jan Fabry
5 ian. 2011 13:05:19

@Jan Fabry, da, ai dreptate, nu am nevoie de o interogare suplimentară.

user1147 user1147
5 ian. 2011 13:06:30

Este pe localhost-ul meu, poți să-mi dai câteva sfaturi cum să-l debughez, poate abordarea mea a fost greșită pentru debugging

user1147 user1147
5 ian. 2011 13:09:59

Aceasta a fost discutată într-o cameră de chat, problema pur și simplu a dispărut.

Jan Fabry Jan Fabry
5 ian. 2011 15:21:53

Se pare că problema a fost cu fișierul .htaccess, când am actualizat permalink-urile, a început să funcționeze cum trebuie.

user1147 user1147
5 ian. 2011 22:01:24
Arată celelalte 7 comentarii
Toate răspunsurile la întrebare 2
0

Am avut recent o problemă similară și am determinat că cauza este că atunci când WordPress interoghează postările dintr-o categorie, caută postări cu post_type egal cu 'post' înainte de a ajunge la punctul în care interoghezi pentru post_type 'any' sau un tip personalizat de postare. Acest lucru nu cauzează o problemă pe pagina 1 deoarece, chiar dacă nu există postări, încarcă șablonul tău. Cu toate acestea, pe pagina 2 și celelalte, nu găsește nicio postare de tipul 'post', așa că încarcă șablonul 404 înainte ca șablonul tău să aibă șansa de a modifica parametrul post_type.

Este acesta un bug? Aceasta este o întrebare bună. Aș spune că da, deoarece te-ai aștepta ca, dacă înregistrezi taxonomia 'category' pe alte post_types, toate post_types să apară în acel arhiv, nu doar strict postările.

Sper că acest lucru te ajută.

23 mar. 2011 23:18:39
0

Am acest cod (curățat) pe un site, care afișează postări dintr-un tip de postare personalizat, iar la final paginarea, dacă sunt mai mult de 10 postări:

<?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> Articole mai vechi', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Articole mai noi <span class="meta-nav">&raquo;</span>', 'twentyten' ) ); ?></div>
</div>
<?php } ?>

Sper că vă poate fi de folos.

5 ian. 2011 16:52:52