Problema di paginazione WordPress /page/2 404 - cosa fare?

24 nov 2015, 14:05:24
Visualizzazioni: 100K
Voti: 22

Mi sono imbattuto nel problema della paginazione /page/2 che restituisce 404 e ho cercato di trovare una soluzione. Ho letto alcuni suggerimenti, ma non hanno ancora risolto il problema.

Funzionante: http://pandasnacozinha.com.br/bolos-doces-e-sobremesas/

Non funzionante: http://pandasnacozinha.com.br/bolos-doces-e-sobremesas/page/2/

Sto cercando di risolvere questo problema da ore. Capisco che WordPress interpreta "page" come un post della categoria "bolos, doces e sobremesas" poiché la mia struttura permalink è /%category%/%postname%/ ma non so come correggerlo.

6
Commenti

Stai eseguendo una query personalizzata nel template? Questo tipicamente accade quando sovrascrivi in modo errato la query nel template per modificare posts_per_page o qualche altro parametro della query.

Milo Milo
24 nov 2015 19:20:49

Non ricordo di aver toccato nemmeno una riga di codice. Come potrei verificarlo?

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

Se non hai modificato il tema e il problema persiste con tutti i plugin disattivati, allora dovresti chiedere alla persona che ha creato il tema.

Milo Milo
24 nov 2015 19:26:30

Grazie per il tuo tempo, Milo. Ho semplicemente installato un plugin che ha risolto il problema. Risponderò a questa domanda e fornirò il link.

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

Semplicemente cambiando il parametro di paginazione da "paged" a "page" ha risolto il problema nel mio caso.

user54002 user54002
17 mar 2020 15:27:31
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 13
8
31

Ho avuto lo stesso problema e ho notato che nel codice 'posts_per_page = 6' e nelle Impostazioni/Lettura nell'argomento 'options-reading' di WordPress, ero impostato a 10. Quando ho impostato tutto allo stesso valore (6 nel mio caso) tutto ha ricominciato a funzionare correttamente.

10 mar 2018 16:56:03
Commenti

Salvavita @jeferson, grazie

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

@Jeferson Padilha ha funzionato perfettamente!!!

Alejo_Blue Alejo_Blue
19 gen 2021 21:57:10

Dove viene impostato posts_per_page?

Keyslinger Keyslinger
3 mar 2021 07:52:05

Questo post mi ha ispirato e ho trovato il motivo per cui succede. Mi hai salvato la giornata!

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

Questo ha completamente risolto il problema per me. Ancora non capisco il problema. Il mio 'posts_per_page' personalizzato è impostato a 9.

Kalnode Kalnode
31 ott 2022 14:43:26

@Keyslinger In un tema personalizzato

Kalnode Kalnode
31 ott 2022 14:43:44

Grazie, questo ha risolto i miei problemi.

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

Grazie, mi hai salvato la vita.

S1awek S1awek
18 lug 2024 17:07:25
Mostra i restanti 3 commenti
4
26

Nel mio caso con permalink personalizzati: /%category%/%postname%/ ho avuto un problema con: /news/page/2/

Alla fine questa soluzione ha funzionato per me (da aggiungere al file 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 dic 2018 17:48:44
Commenti

Grazie, amico. È stato davvero utile.

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

Fantastico. Ha funzionato perfettamente, grazie!

lStoilov lStoilov
2 set 2021 10:50:58

Ho avuto esattamente lo stesso caso - sembra una grande svista permettere la personalizzazione della struttura dei permalink senza dare alcun suggerimento agli utenti che potrebbero dover sovrascrivere manualmente i rewrite... O forse è piuttosto un bug e non dovrebbe essere necessario?

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

Come da tradizione di WordPress, non ho idea del perché funzioni, ma funziona

MrCarrot MrCarrot
15 lug 2024 20:13:01
3
16

Ho provato per diverse ore, fino a quando ho trovato una soluzione funzionante in questo articolo.

Nel tuo file functions.php, aggiungi:

/**
 * Correggi l'impaginazione nelle pagine di archivio
 * Dopo aver aggiunto una regola di riscrittura, vai su Impostazioni > Permalink e clicca Salva per svuotare la cache delle regole
 */
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');

Sostituisci blog con il nome della tua categoria nel codice sopra.

Dopo aver aggiunto questo codice, assicurati di andare in Impostazioni > Permalink e cliccare Salva per svuotare la cache delle regole, altrimenti la regola non verrà applicata.

Spero che questo sia di aiuto!

17 lug 2018 14:11:13
Commenti

Questo ha funzionato per me. Mi piacerebbe ancora sapere il "perché" di questo comportamento che è apparso all'improvviso. Ma grazie per la soluzione.

dashard dashard
26 apr 2019 22:49:21

Grazie! Perché questo bug esiste ancora nel 2020?

skywind skywind
18 dic 2020 00:40:34

@skywind è il 2024 ed è ancora qui lol

khandaniel khandaniel
22 ott 2024 11:05:12
1

Ho scoperto che modificare la struttura dei permalink ha funzionato per me, guarda:

Il permalink era così nella struttura personalizzata: /index.php/%year%/%monthnum%/%day%/%postname%/

Poi l'ho cambiato in: Giorno e nome (basta selezionare il pulsante radio) e apparirà così: /%year%/%monthnum%/%day%/%postname%/

Ho provato e funziona!

16 ago 2017 05:36:11
Commenti

Ho scoperto che semplicemente ricaricando la pagina del permalink risolveva il problema

jerrygarciuh jerrygarciuh
11 mag 2019 00:09:33
0

La mia soluzione si sviluppa in 3 passaggi:

1- il primo: Installare questo plugin: https://wordpress.org/plugins/category-pagination-fix/

2- quindi: adatta il tuo codice a questa struttura

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

        $q=new wp_Query(
            array(
                 "posts_per_page"=>10, // post per pagina
                 "post_type"=>"", // tipo di post
                 "meta_key"=>"", // chiave meta
                 "orderby"=>"meta_value_num", // ordina per valore meta numerico
                 "order"=>"asc", // ordinamento ascendente
                 "paged" => $paged, // numero di pagina corrente

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

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

        ?>





<div class="pagination">
<?php
global $q;
$big = 999999999; // serve un numero intero improbabile
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- vai in WordPress Impostazioni > Lettura > Numero massimo di articoli da visualizzare nella pagina del blog e inserisci il numero 1

19 gen 2019 12:50:41
0

Come hanno già menzionato altri, assicurati che il tuo 'posts_per_page = 6' sia uguale o inferiore all'impostazione in Wordpress > Impostazioni > Lettura > "Le pagine blog mostrano al massimo".

Mi sono imbattuto recentemente in questo problema e la causa era che controllavo completamente il numero di post per pagina dal file template. Se non ci sono abbastanza post per l'ultima pagina, verrà restituito un errore 404.

Ad esempio, avevo impostato i post per pagina a 9, ma con solo 25 post. La prima e la seconda pagina funzionavano, ma la terza pagina restituiva errore 404. Ho impostato l'opzione di WordPress a 1 e lasciato il valore nel file template a 9, e ora funziona come previsto.

31 gen 2019 23:14:45
0

Nel mio caso, utilizzando Divi e il plugin PageNavi, il motivo per cui ricevevo l'errore 404 era che il template della pagina (nel mio caso l'archivio) stava ottenendo il parametro di query paged usando get_query_var( 'paged' ), invece tutto ciò che dovevo fare era usare la variabile globale come mostrato di seguito:

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

<?php

    // $paged è una variabile globale fornita dal 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(); ?>

Questo codice ha corretto i link e risolto i post con il formato nome-post/pagina/N. L'impostazione dei permalink è settata su "Nome articolo" cioè http://localhost/articolo-di-esempio/

20 lug 2019 21:45:48
0

Nel mio caso avevo questo in un loop:

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

E nelle Impostazioni->Lettura avevo impostato 10 articoli per pagina per blog e feed

Ho cambiato a 8 articoli per pagina nelle Impostazioni->Lettura e ora l'errore 404 è scomparso e tutto sembra funzionare.

Non ho idea del perché ma probabilmente questo potrebbe aiutare qualcuno in futuro

18 mar 2020 00:24:40
0

Ecco una generalizzazione della risposta di kregus che corregge tutte le categorie contemporaneamente:

/**
 * Correggi la paginazione nelle pagine archivio
 */
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 ago 2020 07:10:49
0

Per chi utilizza WooCommerce; stavo cercando la stessa cosa e ho scoperto che WooCommerce modifica il parametro posts_per_page per le categorie di prodotti. Vedi: https://woocommerce.com/document/change-number-of-products-displayed-per-page/

Utilizzando il filtro di WooCommerce:

/**  
 * Modifica il numero di prodotti visualizzati per pagina (pagina shop)  
 */  
add_filter( 'loop_shop_per_page', 'wc_update_loop_shop_per_page', 20 );  

function wc_update_loop_shop_per_page( $cols ) {  
  // $cols contiene il numero corrente di prodotti per pagina basato sul valore salvato in Opzioni → Lettura  
  // Restituisci il numero di prodotti che vuoi mostrare per pagina.  
  $cols = 9;  
  return $cols;  
}  

Nel mio caso ho modificato $cols a 12 e la paginazione ha ricominciato a funzionare correttamente.

20 apr 2023 16:53:50
0

Anch'io ho avuto questo problema, ho provato tutte le altre soluzioni presenti in questa pagina ma nulla ha funzionato. Nel mio caso, il problema era causato dall'avere la 'Base delle categorie' uguale al permalink della pagina del blog.

Ad esempio, il permalink della mia pagina del blog era 'articoli' e avevo impostato la 'Base delle categorie' (in Impostazioni > Permalink) anch'essa su 'articoli'. Cambiando la 'Base delle categorie' con qualcos'altro, ho risolto gli errori 404.

19 mag 2023 16:18:05
1
-1

Sto ricevendo l'errore 404 quando torno all'URL con /page/2/.... Quindi vado alla mia pagina 404 di WordPress e aggiungo questo javascript in cima alla pagina di errore:

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

Quando torno alla pagina 404, questa porta con sé l'URL, analizzo l'URL e ottengo la stringa URL di cui ho bisogno e ricostruisco un nuovo link per poi reindirizzare al nuovo link ricostruito.

19 gen 2017 09:28:24
Commenti

Una soluzione basata su JS darà comunque un 404 a Google/Facebook ecc. Non c'è motivo per non eseguire questo tipo di codice lato PHP

Mark Kaplun Mark Kaplun
19 gen 2017 09:43:18
2
-3

Trovata la soluzione!

Installare questo plugin ha risolto il problema: https://wordpress.org/plugins/category-pagination-fix/

Ho anche dovuto apportare modifiche in Impostazioni > Lettura per mostrare meno di 10 articoli per pagina (ora mostro 6 articoli per pagina, ma qualsiasi numero inferiore a 10 dovrebbe funzionare).

Spero funzioni anche per voi. :)

27 nov 2015 21:53:35
Commenti

un plugin obsoleto che risolve un problema specifico con WordPress che è stato risolto nel core 6 anni fa? improbabile che questa sia una buona risposta

Mark Kaplun Mark Kaplun
20 ago 2017 08:03:07

Il plugin era di default una scelta da evitare per me, ma mi hai indirizzato nella giusta direzione con la modifica delle Impostazioni! Grazie!

daneczech daneczech
21 mar 2018 18:21:35