Paginazione numerica style Pagenavi in WordPress

Di default la paginazione degli articoli  in WordPress prevede in home page i link “precedente” e “successivo”. Vediamo oggi come avere una paginazione numerica senza usare i vari plugin tipo Pagenavi agendo come al solito via codice.

Semplice codice in functions.php

Apri come al solito functions.php e inserisci il codice seguente:

// Pagenavi
function kode_pagenavi( $p = 10 ) { // pagine da visualizzare prima e dopo la pagina corrente
if ( is_singular() ) return;
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return;
if ( empty( $paged ) ) $paged = 1;
echo '<span class="meta-normal">Pagina &rarr; ' . $paged . ' di ' . $max_page . '</span>';
if ( $paged > $p + 1 ) p_link( 1, 'Prima' );
if ( $paged > $p + 2 ) echo '&larr;';
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) {
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class='page-numbers currentpage'>{$i}</span> " : p_link( $i );
}
if ( $paged < $max_page - $p - 1 ) echo '&rarr;';
if ( $paged < $max_page - $p ) p_link( $max_page, 'Ultima' );
}
function p_link( $i, $title = '' ) {
if ( $title == '' ) $title = "Pagina &rarr; {$i}";
echo "<span class='page-numbers'><a href='", esc_html( get_pagenum_link( $i ) ), "' title='{$title}'>{$i}</a></span>";
}

Ora richiama la funzione nelle pagine dei vari template, per esempio in index.php inserendo questo codice:

<div class="navigation"><?php kode_pagenavi(); ?></div>

Aggiungiamo un po di style

Come base di partenza puoi usare l’esempio che ti propongo qui di seguito, si tratta dello style in uso su WPStyle. Puoi partire da qui per personalizzarlo a piacere.

/* Pagenavi */
.navigation{margin-top:10px;height:25px;font-size:13px}
.navigation a{color:#595959}
.navigation a:hover{color:#8F8F8F;text-decoration:none}
.page-numbers a:link{background:#DEDEDE;color:#666666;padding:4px 6px 4px 6px;margin-right:4px;}
.page-numbers a:hover{background:#BFBFBF;color:#fff}
.currentpage, .currentpage a:hover{background:#BFBFBF;color:#757575;padding:4px 6px 4px 6px}

Buona Pagenavi a todos!

53 thoughts on “Paginazione numerica style Pagenavi in WordPress

  1. eehm io non riesco a farlo!ç__ç scusate, sono una schiappia in queste cose…ho creato un sito internet, con il tema “Isotherm news”, stile magazine. nella demo c’e la funzione di pagenavi…ho provato ad installare wari plugin uguali a quello, leggo questo post e non riesco…mi potete aiutare?ma comunque quel codice lo dobbiamo inserire così come stà? se volete contattatemi e sempre se volete, mi risolvetreil problema( se è possibile vi faccio vedere meglio il mio problema e vi faccio mettere admin nel mio sito, così potete mettere mani…vedete quanto sono disperato!)
    grazie mille in anticipo!

  2. okay…ma quando lo ho installato non c’era!ç_ç
    eccoti il link :
    mondopaytowrite.hellospace.net

    spero che mi potete aiutare…perchè non si vedono gli articoli….come ho detto prima se volete potete entrare come admin e vedere un pò la situazione…se mi aiutate….siete un mito!:D(già lo siete!)

  3. provo ad installare sempre pagevani, il plugin e mi dice che non lo posso attivare perchè mi genera un errore fatale!…sono disperato!

  4. Elimina il codice di questo tutorial, la funzione dovrebbe essere già inclusa nel tuo tema. Per vedere la barra di navigazione naturalmente devi inserire un numero di post + 1 in base a quelli impèostati in Impostazioni > Lettura > Le pagine del blog visualizzano al massimo…

  5. eehm ok…io ho provato a scrivere un sacco di articoli, a modificare le inpostazioni di lettura…ma non ci riesco…ç___ç e adesso?

  6. si!! adesso mi esce il pagenavi…ma comunque all’inizio non si vede nulla, bisogna andare avanti con la pagina…e alla pagina 2 escono gli articoli…se voi avete notato nella demo, si notano già gli articoli…non sò, che cosa posso modificare per renderlo uguale l’effetto?grazie ancora!

  7. nelle impostazioni di lettura, mi consigliate di visualizzare gli articoli in una pagina statica, oppure gli ultimi articoli? poi c’e anche un’impostazione se far vedere tutto il testo oppure il riassunto…io vorrei avere un’effetto come la demo del template
    (eccovi il link: http://bizzartic.com/bizzthemes/isotherm/)…io vorrei avere quell’effetto lì…grazie ancora per la disponibilità!

  8. mi sono accorto che in quel pagenavi del mio sito gli articoli si vedono dalla seconda pagina e ho notato nella demo che avranno usato qualcosa(che io non sò) per permettere quell’effetto…mi potete aiutare? scusatemi per i troppi commenti….ma sono disperatissimo pechè vorrei fare questa esperienza di un sito in wordpress!

  9. Non usare una pagina statica ma gli ultimi articoli.
    I temi per WP differiscono molto uno dall’altro e la visualizzazione dei post può dipendere dalle impostazioni specifiche di ogni tema.
    Devi prendere confidenza con il pannello di controllo del tema che usi.

  10. ci stò provando da tanto tempo e non riesco a fare quell’effetto…non potete aiutarmi entrando come amministratore del mio sito?per favore…e poi vi cancellate…così almeno potete vedere meglio le impostazioni…cosa ne pensate?

  11. okay…io non sò la vostra e-mail…me la potete scrivere qui via commento, oppure contattatemi tramite la mia e-mail:giovanni.picaro@hotmail.it

    grazie ancora!

  12. Ciao Danilo!
    Volevo ringraziarti per questo tutorial, molto preciso e ben fatto, non ho avuto nessuna difficoltà! Grazie ancora 🙂

  13. Io ho appena provato il codice ma non va.. 🙁 sto facendo un plugin che usa i costom post e mi serviva una barra di navigazione indipendente.. 🙂 per i costom post.. 🙂 qualche consiglio?.. 🙂

  14. Potresti crearti un nuovo template prendendo come esempio page.php in cui andrai ad inserire il richiamo alla funzione Pagenavi che vedi in questo articolo.
    Quando creerai una pagina mediante l’editor di WP inserirai il tuo shortcode per richiamare il tuo plugin e in Attributi Pagina andrai a selezionare in Template dal menu a tendina il template che hai creato precedentemente.

  15. Risolto.. 🙂 pubblico pure il codice che ho usato potrebbe tornare utile a qualcuno.. 🙂

    global $wp_rewrite;
    	$pages = '';
    	$max = $loop->max_num_pages;
    	if (!$current = get_query_var('paged')) $current = 1;
    	$a['base'] = ($wp_rewrite->using_permalinks())?user_trailingslashit(trailingslashit(remove_query_arg('s',get_pagenum_link(1))).'page/%#%/', 'paged' ) : @add_query_arg('paged','%#%');
    	if( !empty($loop->query_vars['s']) ) $a['add_args'] = array( 's' => get_query_var( 's' ) );
    	$a['total'] = $max;
    	$a['current'] = $current;
    	
    	$total = 1; //1 - display the text "Page N of N", 0 - not display
    	$a['mid_size'] = 5; //how many links to show on the left and right of the current
    	$a['end_size'] = 1; //how many links to show in the beginning and end
    	$a['prev_text'] = '&laquo; Indietro'; //text of the "Previous page" link
    	$a['next_text'] = 'Avanti &raquo;'; //text of the "Next page" link
    	
    	if ($max > 1) $text.= '<div class="navigation">';
    	if ($total == 1 && $max > 1) $pages = '<span class="pages">Pagina ' . $current . ' di ' . $max . '</span>'."\r\n";
    	$text.= $pages . paginate_links($a);
    	if ($max > 1) $text.='</div>';
    

    la variabile loop l’ho usata in precendenza essa richiama una nuova WP_query con i paramentri necessari alla selezione del custom post.. 🙂

  16. Grazie per la condivisione Vincenzo 😉
    Presumo che il codice sia stato inserito in una pagina template creata ad-hoc.

    Se ti va di scrivere un breve post riguardante il plugin che hai creato con relativa integrazione del codice appena postato lo pubblicherò volentieri…
    senza impegno naturalmente.

  17. No non ho creato un file template a parte.. 🙂 ho aggiunto il codice alla funzione dello short code.. 🙂 comunque si.. 🙂 però per il post se ne parla dopo domani.. (domani ho esami di analisi all’uni.. 🙂 ) e sarò quindi tutto il giorno fuori casa.. 🙂

  18. Ciao, sono riuscita in parte a risolvere il mio problema sulla paginazione di un tema creato da zero.
    Con il tuo aiuto ora vedo la pagina archivio con 10 post per pagina e sotto la navigazione delle pagine.
    Sembrerebbe tutto ok se non per il fatto che quando clicco sulle pagine successive gli articoli sono sempre quelli. In impostazioni – lettura il numero degli articoli da impostare è quello dei più recenti, non dei post in generale per pagina.
    Cosa ho che non va?
    Grazie

  19. Ciao,
    la mia index è una pagina statica da cui partono link verso pagine dinamiche con post divisi per categoria e una pagina archivio.
    Ora sto provando la paginazione sulla pagina archivio, poi la vorrei applicare alle altre.
    Non è da molto che uso wp, e non ho una grande confidenza coi codici.
    Mi girano perchè col tuo metodo andava tutto bene…se non questo particolare!
    Grazie

  20. Buonasera , ecco l’articolo che mi serviva , io sto cercando davanti indietro destra e sinistra per adattare il pagenavi alla mia home , vi spiego meglio , nella mia home page ho creato un piccolo archivio che prende tutti gli ultimi articoli inseriti e li inserisce in questo rullo di ultime notizie solo il titolo pero’ ho un problema questo rullo si trova nella home page e se il inserisco il page navi non succede niente in quanto esce la bottoniera ma il rullo non fa vedere le notizie precedenti in quanto il page navi lavora sulle pagine e non riesco a farlo dialogare con questo archivio per far vedere le notizie passate , secondo voi c’e’ possibilità di ovviare al problema ?

    Grazie

  21. Il richiamo della funzione dove posso metterlo per fare in modo che i numeri compaiano sia nella index sia nelle pagine delle categorie e degli archivi?
    Grazie mille! Cmq funziona perfettamente!!!

  22. Ciao Danilo. Mi daresti una mano a paginare gli articoli del mio blog? Stanno diventando davvero troppo lunghi, e devo trovare subito una soluzione. Ma ho paura ad mettere mano al codice, non sono una esperta ed ho paura di fare danni.
    Chi mi da una mano passo passo?

  23. Caspita ragazzi, appena inviato il commento…. ho trovato la soluzione.
    E’ bastato inserire questo codice
    E ora spunta il numero che mi indica che c’è un’altra pagina .. .. ora…
    la domanda nasce spontanea .. .. ma a livello Seo questo puo penalizzare le pagine?

  24. Ciao Danilo, grazie per le risposte sempre celeri .. .. ogni volta che cerco qualche risposta .. finisco sempre da te. 🙂
    Sono un’appassionata ma non ho grandi conoscenze .. per ora ad esempio leggo guide e controguide sul Pagerank, fino a ieri non sapevo nemmeno che esisteva. Grazie per la disponibilità e la pazienza, il tuo sito è una fonte inesauribile di soluzioni per me.
    Un’ultima cosa, ho provato ad iscrivermi alla anewsletter ma rimane incantato alla voce “invio in corso”, posso iscrivermi in altro modo?

  25. Grazie Sandra, i complimenti fanno sempre piacere, spero di poter dedicare più tempo al blog, ultimamente l’inserimento di nuovi post è abbastanza carente.
    A breve (spero) ci sarà un rinnovamento nella grafica e saranno aperte le iscrizioni utenti.

    Grazie per la segnalazione sulla newsletter non me ne ero accorto, se usi un lettore di feed RSS puoi comunque iscriverti dal bottone slide sulla sinistra.

    Riguardo al Pagerank ha un’importanza relativa comunque se ti interessa qualcosa riguardo al SEO in generale contattami via mail, trovi il link a fondo pagina.

  26. Salve, io ho inserito il codice nella pagina functions.php e ho modificato lo stile come mi serviva, il fatto è che carica tutti i 10 post in 2 pagine ma quando clicco sulla seconda pagina i post sono gli stessi della prima… come risolvo? grazie

  27. ciao io ho messo il plugin di page navi e o cambiato i codici della pagina index e funziona ma come facio a farlo funzionare, nei miei menu ho fato un menu streaming e voglio metere lo stile di pagnavi, come facio? Mi puoi spiegare ?

  28. Grazie Danilo per aver condiviso questo codice per la navigazione.
    Nella mia implementazione ho cambiato i colori per adattarli al mio theme per il resto è tutta farina del tuo sacco 🙂

  29. nel senso che io apro una nuova pagina da creare per i menù e voglio metere tanti articoli in una pagina ma in ogni pagina voglio metere i numeri in fondo per andare avanti e indietro come facio per metere i numeri nella pagina

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *