Problemă de paginare WordPress /page/2 404 - ce e de făcut?

24 nov. 2015, 14:05:24
Vizualizări: 100K
Voturi: 22

M-am confruntat cu problema paginării care dă eroarea 404 la /page/2 și am încercat să găsesc o soluție. Am citit câteva sugestii, dar încă nu m-au ajutat.

Funcționează: http://pandasnacozinha.com.br/bolos-doces-e-sobremesas/

Nu funcționează: http://pandasnacozinha.com.br/bolos-doces-e-sobremesas/page/2/

Încerc de ore întregi să rezolv această problemă. Înțeleg că WordPress presupune că "page" este un articol din categoria "bolos, doces e sobremesas" deoarece structura mea permalink este /%category%/%postname%/ dar nu știu cum să o repar.

6
Comentarii

Rulezi propria interogare în șablon? Acest lucru se întâmplă de obicei când suprascrii incorect interogarea în șablon pentru a modifica posts_per_page sau alt parametru al interogării.

Milo Milo
24 nov. 2015 19:20:49

Nu-mi amintesc să fi atins vreun rând de cod. Cum aș putea verifica acest lucru?

Giovanna Coppola Giovanna Coppola
24 nov. 2015 19:22:10

Dacă nu ai modificat tema și problema persistă cu toate modulele dezactivate, atunci ar trebui să întrebi persoana care a creat tema.

Milo Milo
24 nov. 2015 19:26:30

Mulțumesc pentru timpul acordat, Milo. Am instalat pur și simplu un plugin care a rezolvat problema. Voi răspunde la această întrebare și voi oferi linkul.

Giovanna Coppola Giovanna Coppola
27 nov. 2015 21:48:50

Schimbarea parametrului de paginare din "paged" în "page" a rezolvat problema în cazul meu.

user54002 user54002
17 mar. 2020 15:27:31
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 13
8
31

Am avut aceeași problemă și am observat că în 'posts_per_page = 6' și în 'Settings/Reading la argumentul WordPress 'options-reading', am avut setat 10. Când am pus totul la aceeași valoare (6 în cazul meu) totul a început să funcționeze din nou.

10 mar. 2018 16:56:03
Comentarii

Salvator @jeferson, mulțumesc

Ana DEV Ana DEV
28 apr. 2020 09:06:02

@Jeferson Padilha a funcționat perfect!!!

Alejo_Blue Alejo_Blue
19 ian. 2021 21:57:10

Unde este setat posts_per_page?

Keyslinger Keyslinger
3 mar. 2021 07:52:05

Acest post m-a inspirat și am descoperit problema de ce se întâmplă. Mi-ai salvat ziua!

Felix H. Felix H.
9 iun. 2022 13:27:48

Aceasta a rezolvat complet problema pentru mine. Încă nu înțeleg care era problema. 'posts_per_page' personalizat este setat la 9.

Kalnode Kalnode
31 oct. 2022 14:43:26

@Keyslinger Într-o temă personalizată

Kalnode Kalnode
31 oct. 2022 14:43:44

Mulțumesc, asta a rezolvat problemele mele.

Diaz Adhyatma Diaz Adhyatma
28 apr. 2023 14:43:18

Mulțumesc, mi-ai salvat situația.

S1awek S1awek
18 iul. 2024 17:07:25
Arată celelalte 3 comentarii
4
26

În cazul meu cu legături personalizate: /%category%/%postname%/ Am avut o problemă cu: /news/page/2/

Și în final această soluție a funcționat pentru mine (adaugă în functions.php):

function remove_page_from_query_string($query_string)
{ 
    if ($query_string['name'] == 'page' && isset($query_string['page'])) {
        unset($query_string['name']);
        $query_string['paged'] = $query_string['page'];
    }      
    return $query_string;
}
add_filter('request', 'remove_page_from_query_string');
6 dec. 2018 17:48:44
Comentarii

Mulțumesc, omule. A fost cu adevărat util.

Shehroz Ahmed Shehroz Ahmed
20 mar. 2021 21:14:38

Genial. A funcționat perfect. mulțumesc!

lStoilov lStoilov
2 sept. 2021 10:50:58

Tocmai am avut exact același caz - pare o mare neglijență să permiți personalizarea structurii de permalinkuri fără să oferi vreun indiciu utilizatorilor că ar putea fi nevoie să suprascrie manual regulile de rescriere... Sau poate mai degrabă este un bug și nu ar trebui să fie necesar?

Sarah Groß Sarah Groß
22 nov. 2021 15:43:16

În stilul obișnuit WordPress, nu am nicio idee de ce funcționează, dar funcționează

MrCarrot MrCarrot
15 iul. 2024 20:13:01
3
16

Am încercat câteva ore, până când am găsit o soluție funcțională în acest articol.

În fișierul tău functions.php, adaugă:

/**
 * Repară paginarea pe paginile de arhivă
 * După adăugarea regulii de rescriere, mergi la Setări > Legături permanente și dă clic pe Salvează pentru a reîmprospăta cache-ul de reguli
 */
function my_pagination_rewrite() {
    add_rewrite_rule('blog/page/?([0-9]{1,})/?$', 'index.php?category_name=blog&paged=$matches[1]', 'top');
}
add_action('init', 'my_pagination_rewrite');

Înlocuiește blog cu numele categoriei tale în codul de mai sus.

După ce adaugi acest cod, asigură-te că mergi la Setări > Legături permanente și dai clic pe Salvează pentru a reîmprospăta cache-ul de reguli, altfel regula nu va fi aplicată.

Sper că te ajută!

17 iul. 2018 14:11:13
Comentarii

Asta a funcționat pentru mine. Aș fi totuși curios să aflu de ce apare acest comportament din senin. Dar mulțumesc pentru soluție.

dashard dashard
26 apr. 2019 22:49:21

Mulțumesc! De ce mai există acest bug în 2020?

skywind skywind
18 dec. 2020 00:40:34

@skywind e 2024 și încă e prezent haha

khandaniel khandaniel
22 oct. 2024 11:05:12
1

Am descoperit că schimbarea structurii permalink-ului a funcționat pentru mine, uite:

Permalink-ul era așa în structura personalizată: /index.php/%year%/%monthnum%/%day%/%postname%/

Apoi l-am schimbat la: Zi și nume (doar selectez butonul radio) și va arăta astfel: /%year%/%monthnum%/%day%/%postname%/

Am încercat acest lucru și funcționează!

16 aug. 2017 05:36:11
Comentarii

Am descoperit că simpla încărcare a paginii cu legătura permanentă a rezolvat problema

jerrygarciuh jerrygarciuh
11 mai 2019 00:09:33
0

soluția mea este în 3 pași:

1- primul pas: Instalarea acestui plugin: https://wordpress.org/plugins/category-pagination-fix/

2- apoi: potrivește codul tău cu această structură

<?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; ?>
        <?php

        $q=new wp_Query(
            array(
                 "posts_per_page"=>10, // numărul de articole pe pagină
                 "post_type"=>"", // tipul de postare
                 "meta_key"=>"", // cheia meta pentru sortare
                 "orderby"=>"meta_value_num", // ordonează după valoarea numerică a meta_key
                 "order"=>"asc", // ordonare ascendentă
                 "paged" => $paged, // numărul paginii curente

            )
        );
 while($q->have_posts())

        {
            $q->the_post();    
            ?>
<li></li>
 <?php
        }
        wp_reset_postdata();

        ?>





<div class="pagination">
<?php
global $q;
$big = 999999999; // avem nevoie de un număr întreg improbabil
echo paginate_links( array(
        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $q->max_num_pages
) );
?>
</div>

3- mergi în setările WordPress > citire > numărul maxim de articole pe pagina blogului apoi introdu numărul 1

19 ian. 2019 12:50:41
0

După cum au menționat și alții, asigură-te că valoarea 'posts_per_page = 6' este egală sau mai mică decât setarea din WordPress Setări > Citire > Pagini blog afișează cel mult.

Am întâlnit recent această problemă și motivul era că controlam complet numărul de articole pe pagină din fișierul template. Dacă nu sunt suficiente articole pentru pagina finală, aceasta va returna eroarea 404.

De exemplu, aveam setat să afișez 9 articole pe pagină, dar aveam doar 25 de articole. Paginile 1 și 2 funcționau, dar pagina 3 returna eroare 404. Am setat opțiunea din WordPress la 1 și am lăsat valoarea 9 în fișierul template, iar acum funcționează corect.

31 ian. 2019 23:14:45
0

În cazul meu, folosind Divi și pluginul PageNavi, motivul pentru care primeam eroarea 404 era că template-ul paginii (în cazul meu arhiva) prelua parametrul de interogare paged folosind get_query_var( 'paged' ), în loc să folosească variabila globală, ca în exemplul de mai jos:

<?php
/*
Template Name: Arhive
*/
get_header(); ?>

<?php

    // $paged este o variabilă globală furnizată de tema?
    global $paged;

    $args = array(
        'posts_per_page' => 4, 
        'post_type' => 'axis',
        'paged' => $paged,
    );

    $myposts = new WP_Query($args);
?>

<div div style="width: 50%; margin: 0 auto;">

    <?php while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

            <div class="media-body">
                <?php the_content(); ?>
            </div>


    <?php endwhile; wp_reset_postdata(); ?>

    <?php wp_pagenavi( array( 'query' => $myposts ) ); ?>

</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Acest cod a corectat legăturile și a rezolvat problema cu postările în formatul post-name/page/N. Setarea permalinkului este pe "Numele postării", adică http://localhost/sample-post/

20 iul. 2019 21:45:48
0

În cazul meu, aveam acest cod într-o buclă:

if (is_category()) $args['posts_per_page'] = 8;

Și în Setări->Citire aveam setat să afișez 10 articole pe pagină pentru blog și sindicalizare.

Am schimbat la 8 articole pe pagină în Setări->Citire și acum eroarea 404 a dispărut și totul pare să funcționeze.

Nu am idee de ce, dar probabil acest lucru ar putea ajuta pe cineva în viitor.

18 mar. 2020 00:24:40
0

Iată o generalizare a răspunsului lui kregus care repară paginarea pentru toate categoriile deodată:

/**
 * Repară paginarea pe paginile de arhivă
 */
function my_pagination_rewrite() {
    $categories = '(' . implode('|', array_map(function($category){return $category->slug;}, get_categories())) . ')';
    add_rewrite_rule($categories . '/page/?([0-9]{1,})/?$', 'index.php?category_name=$matches[1]&paged=$matches[2]', 'top');
}
add_action('init', 'my_pagination_rewrite');
22 aug. 2020 07:10:49
0

Pentru cei care folosesc WooCommerce; căutam același lucru și am descoperit că WooCommerce modifică posts_per_page pentru categoriile de produse. Vezi: https://woocommerce.com/document/change-number-of-products-displayed-per-page/

Folosind filtrul WooCommerce:

/**
 * Schimbă numărul de produse afișate pe pagină (pagina de magazin)
 */
add_filter( 'loop_shop_per_page', 'wc_update_loop_shop_per_page', 20 );

function wc_update_loop_shop_per_page( $cols ) {
  // $cols conține numărul curent de produse pe pagină bazat pe valoarea stocată în Opțiuni –> Citire
  // Returnează numărul de produse pe care dorești să le afișezi pe pagină.
  $cols = 9;
  return $cols;
}

În cazul meu, am schimbat $cols la 12 și apoi paginarea a funcționat din nou corect.

20 apr. 2023 16:53:50
0

Am avut și eu această problemă, am încercat toate celelalte soluții de pe această pagină, dar nimic nu a funcționat. În cazul meu, problema a fost cauzată de faptul că 'Baza categoriei' era aceeași cu permalinkul paginii de blog.

De exemplu, permalinkul paginii mele de blog era 'articole' și aveam setată 'Baza categoriei' (în Setări > Legături permanente) tot la 'articole'. Schimbarea 'Bazei categoriei' la altceva a rezolvat erorile 404.

19 mai 2023 16:18:05
1
-1

Primesc eroarea 404 când încerc să accesez URL-ul cu /page/2/.... Așa că mă duc pe pagina de 404 din WordPress și adaug acest JavaScript în partea de sus a paginii de eroare:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script>
   var getreurl = window.location.href;
   if(getreurl != ""){
     var res = getreurl.split("/?");
       if(res[1] != ""){
         var resd = "http://www.yourwebsite.com/list/?"+res[1];
         window.location = resd;
     }
 }
 </script>

Când revin pe pagina 404, acesta preia URL-ul, analizez URL-ul și obțin șirul de caractere de care am nevoie, apoi reconstruiesc un link nou și redirecționez către noul link reconstruit.

19 ian. 2017 09:28:24
Comentarii

Soluția bazată pe JS va tot returna eroarea 404 pentru Google/Facebook etc. Nu există niciun motiv să nu rulezi acest tip de cod pe partea de PHP

Mark Kaplun Mark Kaplun
19 ian. 2017 09:43:18
2
-3

Am găsit soluția!

Instalarea acestui plugin a rezolvat problema: https://wordpress.org/plugins/category-pagination-fix/

A trebuit să fac și modificări în Setări > Citire pentru a afișa mai puțin de 10 postări pe pagină (acum afișez 6 postări pe pagină, dar orice număr sub 10 ar trebui să funcționeze).

Sper să vă funcționeze și vouă. :)

27 nov. 2015 21:53:35
Comentarii

un plugin învechit care rezolvă o problemă specifică cu WordPress, care a fost rezolvată în nucleu acum 6 ani? puțin probabil să fie un răspuns bun

Mark Kaplun Mark Kaplun
20 aug. 2017 08:03:07

Plugin-ul a fost din start o opțiune exclusă pentru mine, dar m-ai îndreptat în direcția corectă cu schimbarea din Setări! Mulțumesc!

daneczech daneczech
21 mar. 2018 18:21:35