venerdì 16 dicembre 2011

Menu personalizzati in Wordpress

Con Wordpress 3 è stata introdotta nella popolare piattaforma di blogging una importante novità: i menu personalizzati.
Per avere il nostro menu personalizzato, ovvero un menu diverso rispetto alla solita lista di pagine o di categorie, è sufficiente crearlo dal menu Aspetto > Menu, e poi assegnarlo alla posizione di navigazione principale. Le posizioni dipenderanno dal nostro tema.
Normalmente un tema che supporti i menu personalizzati ha una sola posizione a disposizione, ma possiamo aggiungere noi tutte quelle che ci servono, grazie alle funzioni register_nav_menu() e wp_nav_menu().

Nel file functions.php del nostro tema è sufficiente aggiungere questo codice (per ogni posizione di menu che vogliamo aggiungere):
if ( function_exists( 'register_nav_menu' ) ) {
    register_nav_menu( 'menu1', 'Il mio menu' );
}


e nel nostro tema, nella posizione in cui vogliamo far apparire il menu, dobbiamo scrivere questo codice:
wp_nav_menu(array('theme_location'  => 'menu1'));

Come vedete il valore della chiave "theme_location" deve essere il nome che abbiamo dato al nostro menu. Invece il secondo parametro della funzione register_nav_menu() sarà il nome che apparirà nella nostra dashboard alla sezione Aspetto > Menu > Posizione dei temi.
Ricordiamoci di assegnare un menu a quella posizione nella dashboard, altrimenti apparirà il menu di navigazione di default.

Possiamo personalizzare il nostro menu in molti modi, semplicemente modificando la Walker Class di Wordpress. Infatti l'ultimo parametro accettato dalla funzione wp_nav_menu() è proprio un eventuale walker object personalizzato da usare.

Ma cosa potremmo fare modificando questa classe? Per esempio potremmo voler mostrare una descrizione per ogni voce del menu, e questo articolo (Improve your wordpress navigation menu output) ci spiega come fare.
Oppure potremmo voler mostrare una thumbnail per ogni voce del menu, come ci spiega quest'altro articolo (Wordpress - Featured images thumbnails in menus).
Oppure ancora potremmo aver bisogno di mostrare anche un id della pagina che andiamo a linkare, per esempio per qualche effetto con jQuery, e per questo vi consiglio di seguire questo articolo (WordPress – adding page id’s to menu).


 



1 commento:

Anonimo ha detto...

Ciao,
io vorrei avere menu sulla barra laterale destra diversi in ogni pagina.
Es: alla pagina "hotel", vorrei mettere sulla barra destra i link a tutti gli hotel, sulla pagina "monumenti" vorrei mettere i link a a tutti i monumenti, ecc... Naturalmente, nella pagina "hotel" non si devono vedere i monumenti e nella magina "monumenti" non si devono vedere gli hotel. è possibile fare questo? Grazie mille, per il supporto!!
L.

Posta un commento