Wordpress: personalizzare la navigazione tra i post
lunedì 9 febbraio, 2009Wordpress mette a disposizione numerose funzioni per spostarsi tra i vari post e pagine in avanti ed indietro. Queste sono usate all'interno dei temi, spesso in modo del tutto interscambiabile, anche se contengono alcune differenze. Tutto questo, a dire il vero, creo non poca confusione al momento della scelta della funzione da usare. Eccone alcune note:
adjacent_post_link()next_posts_link()posts_nav_link()
Con la release 2.7 di Wordpress, poi, sono stati aggiunge altre funzioni (o rese pubbliche) usate in realtà all'interno di quelle già note. Ad esempio la nuova get_next_posts_link() è usata da next_posts_link(), disponibile dalla release 0.71. Ovviamente la get_previous_posts_link() viene chiamata da previous_posts_link().
Per ragioni storiche e di compatibilità con i "vecchi" template, analizzando il codice sorgente di Wordpress ci si rende conto che alcune funzioni sono davvero ridondanti. Ad esempio posts_nav_link() chiama al suo interno previous_posts_link() e next_posts_link(). Tuttavia il codice (nella release 2.7 di Wordpress) di next_posts_link() è:
-
/**
-
* Display the next posts pages link.
-
*
-
* @since 0.71
-
* @uses get_next_posts_link()
-
*
-
* @param string $label Content for link text.
-
* @param int $max_page Optional. Max pages.
-
*/
-
function next_posts_link( $label = 'Next Page »', $max_page = 0 ) {
-
echo get_next_posts_link( $label, $max_page );
-
}
Personalizzazione
Lasciando da parte le questioni di codice sorgente a basso livello, torniamo ad affrontare l'argomento di questo post, cioè di come modificare facilmente il layout classico dell'avanti e indietro. La navigazione avanti ed indietro può essere posizionata dove si vuole, ad esempio nel file archive.php si può usare:
Dato che ci stiamo muovendo in un archivio, che è limitato rispetto all'intera possibilità di post (perchè filtra per data, argomento, tag, etc...) usiamo next_posts_link() e previous_posts_link(). Impostando poi le label in modo opportuno, come nell'esempio, possiamo operare le modifiche di layout tramite il solo foglio di stile, lasciando un output HTML valido. Ad esempio è possibile "nascondere" le label e sostiturle con un'immagine usando:
-
.alignright{float:right}
-
.alignleft{float:left}
-
/* personalizzazione della navigazione *>
-
div.navigation {display:block;height:38px;padding:16px 0 16px 16px;width:678px}
-
div.navigation div.prev a {display:block;width:38px;height:38px;background:url(images/prev_image.png) no-repeat}
-
div.navigation div.next a {display:block;width:38px;height:38px;background:url(images/next_image.png) no-repeat}
-
div.navigation div.prev a span, div.navigation div.next a span{display:none}
L'ultima riga è quella che permette di nascondere i testi, ed è per questo che sono stati inseriti degli span nella chiamata alla funzione next_posts_link() e previous_posts_link()
Per la navigazione nel file single.php, spesso si usa:
Anche in questo caso il codice CSS è sempre lo stesso.










10

Ottimo articolo... sto iniziando a seguire il tuo blog e devo dire che offri dei contenuti veramente molto interessanti. Complimenti
!
@ziosteve: grazie!
Ti ringrazio molto per l'articolo...utilissimo davvero. Metterò alla prova al più presto i tuoi consigli. Ciao!
sono alle prime armi
spero di migliorare
e di imparare passo passo
ciao, ho inserito i link di navigazione in una pagina wp però non funzionano. quando clicco su uno dei due link mi visualizza sempre gli stessi articoli visualizzati nella pagina "principale".
cosa sbaglio?
grazie dell'aiuto