Come abilitare i nuovi menu di navigazione di WordPress su un tema esistente
Oltre al nuovo tema “Twenty Yen”, l’altra piccola rivoluzione di WordPress 3.0 sono i Menu Personalizzabili.
Finalmente possiamo decidere le “voci” da inserire nella barra di navigazione del nostro tema WordPress, utilizzando una comoda interfaccia simile a quella dei Widget.
Il nostro tema però deve essere predisposto per l’uso dei nuovi menu: nella maggior parte dei casi si tratta di incollare un po’ di codice php, un compito abbastanza semplice, non c’è bisogno di essere esperti…
Di seguito vedremo i passi necessari per sostituire con un nuovo Menu Personalizzato, la classica lista di pagine generata col comando wp_list_pages() che molti temi (recenti) utilizzano.
Nel caso il vostro tema usasse una modalità differente (ormai lo sappiamo che ogni tema “fa storia a sè”) il procedimento sarà comunque simile.
Ma vediamo come procedere.
Il mio tema non supporta i nuovi menu?
Innanzitutto dovete verificare se il tema ha già il supporto per i menu. Per fare questo andate nel pannello di controllo di WordPress (ovviamente va aggiornato alla versione 3.0). Selezionate “Aspetto” (Appearance) e poi “Menu” per aprire la nuova pagina di gestione.
Se il tema in uso non è ancora abilitato per i nuovi menu apparirà l’avvertimento seguente:
In questo caso avete 3 possibilità:
- verificate sul sito del tema se ne esiste una versione aggiornata che supporta i menu. Eventualmente mandate un’email all’autore del tema allegando i link di approfondimento che trovate in fondo a questo post: lui saprà cosa fare.
- Usate semplicemente il nuovo Widget chiamato “Menu personalizzato” per inserire i menu nella barra laterale.
- Continuate a leggere questo post e abilitate una volta per tutte il tema.
Come attivare i menu personalizzati
L’attivazione è abbastanza semplice e, come vi dicevo, per la maggior parte dei casi richiede semplicemente il copia-incolla di qualche riga di php.
Passo1: aprite il file function.php che si trova nella cartella del vostro tema, incollatevi le seguenti righe, subito prima del tag di chiusura del php "?>": poi salvate e chiudete.
register_nav_menus(array('primary'=>__('Primary Menu'),));
Con questa riga abbiamo attivato un nuovo menu e registrato la locazione dove apparirà col nome di “primary”.
Passo2: ora torniamo nel pannello di gestione dei menu, creiamone uno nuovo, aggiungiamo qualche pagina. Poi salviamo. In questo modo quando imposteremo il menu nel tema potremo “vedere” la differenza…
Passo3: individuate il file dove compare la barra di navigazione che volete sostituire, normalmente per la barra di navigazione orizzontale il file è header.php, ovviamente sempre nella cartella del vostro tema.
Fatene una copia di sicurezza e mettetela al sicuro.
Attenzione: le copie di sicurezza non le fa mai nessuno, ma in questo caso il backup è fondamentale: c’è una certa probabilità che alla fine del processo di conversione ai nuovi menu ti ritrovi con un menu almeno graficamente “scompaginato”: senza copia di sicurezza non avrai modo per tornare indietro!!!
Passo4: Ora, nel file originale (la copia di sicurezza l’hai messa al sicuro, vero?) cercate la riga con il comando che inizia con wp_list_pages (è il comando di WordPress che elenca nel menu le pagine) e sostituite l’intero comando con:
<?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
Ora salvate… ed ecco sostituita la lista delle pagine con il vostro nuovo menu. Ora potete tornare nella pagina di gestione dei menu e aggiungere / sostituire tutte le voci che vi servono.
Attenzione: Se il vostro tema non usa il comando
wp_list_pagesper creare il menu di navigazione, o se usa parametri particolari per modificarne l’aspetto, è probabile che il nuovo menu appaia piuttosto “scompaginato“.
In questo caso è indispensabile approfondire la struttura del proprio tema e i parametri che si possono “passare” alla funzione wp_nav_menu, in modo da personalizzarne l’output secondo le nostre esigenze. Di seguito trovate link a risorse molto utili per fare questo.
Se la cosa dovesse richiedervi parecchio tempo ripristinate temporaneamente la copia di sicurezza del file che avete realizzato in precedenza…
- Il blog di web2feel che illustra, anche con screencast la procedura che vi ho appena descritto
- Il sempre ottimo Justin Tadlock che vi dà una panoramica completa sui Menu e sulle possibilità di personalizzare l’output della funzione in modo da adeguarne la grafica alle nostre esigenze.
- Il riferimento ufficiale è come sempre il Codex di WordPress
P.S. Qui su WordPressMania sto usando i nuovi menu in 3 punti diversi: in alto a destra (sezione chi siamo/iscriviti/contattaci), nella barra di navigazione principale e, in un widget, per elencare i plugin che ho sviluppato io (barra laterale sinistra, box “I miei plugin”). Come vedete sono molto flessibili.







” Passo1: aprite il file function.php che si trova nella cartella del vostro tema, incollatevi le seguenti righe, subito prima del tag di chiusura del php “?>”: poi salvate e chiudete.
register_nav_menus(array(‘primary’=>__(‘Primary Menu’),)); ”
Ciao Stefano, sono a zero con la conoscenza del codice php e volevo costruire un menu decente per un blog costruito con Artisteer.
Vorrei subito chiederti cosa intendi con “subito prima del php “?>” “? le virgolette sono comprese nel tag? Di questi tag, nel file “function.php” ce ne sono a decine. Dove andrebbe, precisamente, collocata la stringa?
Poi un altro quesito: ammesso e non concesso che io sia in grado di seguire fino alla fine le tue istruzioni, potrò inserire nel menu creato la voce “categorie” e farla funzionare come funziona nel widget con tanto di sottocategorie?
Ti ringrazio per ogni tua attenzione.
E scusami per l’ignoranza: sono un neofita di wordpress.
Marco
” Passo1: aprite il file function.php che si trova nella cartella del vostro tema, incollatevi le seguenti righe, subito prima del tag di chiusura del php “?>”: poi salvate e chiudete.
register_nav_menus(array(‘primary’=>__(‘Primary Menu’),)); ”
Ciao Stefano, sono a zero con la conoscenza del codice php e volevo costruire un menu decente per un blog costruito con Artisteer.
Vorrei subito chiederti cosa intendi con “subito prima del php “?>” “? le virgolette sono comprese nel tag? Di questi tag, nel file “function.php” ce ne sono a decine. Dove andrebbe, precisamente, collocata la stringa?
Poi un altro quesito: ammesso e non concesso che io sia in grado di seguire fino alla fine le tue istruzioni, potrò inserire nel menu creato la voce “categorie” e farla funzionare come funziona nel widget con tanto di sottocategorie?
Ti ringrazio per ogni tua attenzione.
E scusami per l’ignoranza: sono un neofita di wordpress.
Marco