Rezolvare eroare 404 la paginare pentru tipuri de postări personalizate

10 iul. 2011, 04:09:33
Vizualizări: 31.7K
Voturi: 10

Am încercat toată ziua să rezolv această problemă dar nu am avut succes...

Am un tip de postare personalizat numit 'news' și un șablon de arhivă (archive-news.php), aici aș dori să afișez 2 postări cu paginare, care funcționează bine, până când încerc să navighez la 'pagina următoare' (/news/page/2) care returnează o eroare 404.

Aveți vreo idee cum să rezolv această problemă / ce fac greșit?

Am petrecut literalmente toată ziua încercând să găsesc o soluție căutând pe Google și forumurile WordPress, am găsit multe soluții, dar niciuna nu a funcționat până acum.

Funcția mea pentru tipul de postare personalizat: http://pastebin.com/uG1L6YNu
Regulile mele de rescriere afișate: http://pastebin.com/jbaDANYr

1
Comentarii

și încă ceva... Fișierul meu news-archive.php: http://pastebin.com/vjcx77F7

Dale-Anthony Dale-Anthony
10 iul. 2011 04:09:55
Toate răspunsurile la întrebare 4
5
21

Acum funcționează pentru mine... pentru cei care întâmpinați aceeași problemă, se pare că tot codul era corect.

Problema era că WordPress este configurat implicit să afișeze 10 articole pe pagină, ceea ce intra în conflict cu interogarea mea (care limita la 2 articole). Pentru a rezolva problema, am modificat setarea din WordPress (Setări / Citire în panoul de administrare) la 1.

11 iul. 2011 23:39:37
Comentarii

Această problemă apare mereu. După părerea mea, tipurile personalizate de articole nu sunt articole obișnuite, așa că ar trebui să existe o variabilă de interogare posts_per_page separată pentru fiecare tip de articol. Oricum, iată un răspuns care arată cum să ajustați valoarea posts_per_page din mers fără a modifica setările din admin: http://wordpress.stackexchange.com/questions/30757/change-posts-per-page-count/30763#30763

Dave Romsey Dave Romsey
4 feb. 2012 02:41:26

Această întrebare de la goto10 funcționează perfect și este mai bună dacă doriți să utilizați în continuare setarea posts per page pentru alte pagini. Rămân totuși curios de ce se întâmplă acest lucru, este prima dată când mi se întâmplă. Până acum am putut folosi posts_per_page în mod normal fără să intre în conflict cu setările WordPress.

Javier Villanueva Javier Villanueva
23 feb. 2012 13:50:17

Mulțumesc mult pentru această informație! M-am chinuit ore întregi să modific regulile de rescriere și altele, iar se pare că aceasta era problema.

Chaser324 Chaser324
27 aug. 2012 22:11:31

Este 2019, iar acest răspuns este încă valabil! Uimitor.

Cenlan Cenlan
17 dec. 2019 15:13:50

Mulțumesc, foarte util.

user1032559 user1032559
19 apr. 2022 23:19:45
2
10

Am găsit o soluție aici: http://walrusinacanoe.com/web-development/742

Este elegantă și funcțională:

add_action( 'parse_query','changept' );
function changept() {
    if( is_category() && !is_admin() )
        set_query_var( 'post_type', array( 'post', 'your_custom_type' ) );
    return;
}
26 sept. 2011 20:40:42
Comentarii

Acest lucru chiar a funcționat pentru mine. Cealaltă soluție (WP-Admin / Settings / Reading / 1) nu a funcționat deloc.

Mulțumesc pentru asta! (ore pierdute depanând și căutând)

Esteban Esteban
15 oct. 2014 01:03:03

Mulți ani mai târziu, această funcție mi-a rezolvat problema. 3 zile în care mi-am smuls părul! Mulțumesc din suflet.

Edvin Uddfalk Edvin Uddfalk
21 mai 2024 21:31:53
1

Probabil ați încercat deja acest lucru, dar resetarea legăturilor permanente poate rezolva această problemă. Accesați Setări->Legături permanente și salvați-le din nou.

10 iul. 2011 05:21:07
Comentarii

Mulțumesc, am încercat și eu acest lucru, dar problema a rămas în continuare.

Dale-Anthony Dale-Anthony
10 iul. 2011 12:51:52
2

încearcă această variantă:

add_action('pre_get_posts','custom_pre_get_posts'); 
function custom_pre_get_posts( $query ) 
{  
    if( $query->is_main_query() && !$query->is_feed() && !is_admin()) {
        $query->set( 'paged', str_replace( '/', '', get_query_var( 'page' ) ) );  
    }  
} 

add_filter('request', 'custom_request');
function custom_request($query_string )
{ 
    if( isset( $query_string['page'] ) ) { 
        if( ''!=$query_string['page'] ) { 
            if( isset( $query_string['name'] ) ) { 
                unset( $query_string['name'] ); 
            } 
        } 
    } return $query_string; 
}
5 mai 2021 16:56:08
Comentarii

Poți să explici soluția ta?

tehlivi tehlivi
13 mai 2021 04:32:34

Codul pare să afișeze totul, reconstruiește corect șirul de interogare. Dacă orice pagină este deschisă, dar nu este reflectată greșit în URL, reconstruiește și adaugă slug-ul lipsă în secțiune.

ktscript ktscript
13 mai 2021 07:28:30