Creare un menu WordPress con la funzione wp_nav_menu

Per garantire una buona esperienza utente e quindi anche una buona navigabilità all’interno del nostro blog WordPress abbiamo bisogno di un menu o menù o_O
Senza una barra di navigazione che linka le pagine interne il visitatore rimarrà intrappolato in una pagina e finirà per chiudere la finestra del browser. Quindi il menu di navigazione è un elemento fondamentale che va ripreso in tutte le pagine del blog e che solitamente viene collocato nell’header. Poi lo puoi inserire anche nel footer, nella sidebar o in qualunque altra posizione del tema, a te la scelta!

Creare un menu WordPress

In un articolo precedente avevo scritto un tutorial su come creare un tema WordPress di base (con relativo file .zip da scaricare ed installare) in cui ho riportato alcune funzioni base del CMS, non era incluso il menu, per cui puoi approffitarne adesso per implementarlo.

01. Registrare un menu su WordPress con register_nav_menu()

Quello che ti spiegherò oggi è come registrare un menu su WordPress con le funzioni register_nav_menu() o register_nav_menus(), la prima serve per registrare un singolo menu mentre la seconda per registrare tanti menu di navigazione.

Per registrare semplicemente un menu puoi utilizzare la funzione di WordPress register_nav_menu() con due parametri: $location e $description. Il primo parametro di permette di identificare la posizione del tema in cui verrà visualizzato il menù, mentre il secondo parametro è la descrizione del menu.

<?php register_nav_menu( $location, $description ); ?>

Questa funzione va richiamata all’interno del file functions.php del tema in uso. La “location” che viene memorizzata, apparirà all’interno del pannello di controllo in Aspetto > Menu.

Pannello di controllo menu WordPress
Posizione del menu nel tema WordPress

Ecco un esempio concreto della funzione:

<?php register_nav_menu( 'menu_1' => 'Top Menu' ); ?>

02. Mostrare il menu con la funzione wp_nav_menu()

Adesso dobbiamo richiamare la funzione wp_nav_menu()all’interno dell’header (esattamente nella posizione in cui vuoi mostrare il menu) andando a modificare proprio il file header.php
Come ti ho specificato precedentemente, in verità potresti richiamarla anche dentro il footer, o la sidebar od in qualunque altro template.

Lista dei parametri di wp_nav_menu()

<?php
$defaults = array(
    'container'      => 'div',
    'theme_location' => 'menu_1',
    'echo'           => true,
    'menu_class'     => '',
    'walker'         => '',
    'fallback_cb'    => '',
    'items_wrap'     => '<ul class="%2$s">%3$s</ul>'
);
wp_nav_menu($defaults);
?>

I parametri che ho ripreso sono solo alcuni della lista che ti ho elencato poche righe fa, tu puoi inserirle tutte e lasciarne alcune vuote, oppure puoi inserire solo i parametri che ti servono.

Un parametro importante di wp_nav_menu() è fallback_cb che ha lo scopo di richiamare un’altra funzione quando il menu non esiste. Di default richiama la funzione wp_page_menu() e volendo puoi richiamarne un’altra.
Comunque la funzione deve essere riportata in questo modo:

'fallback_cb'     => 'wp_page_menu'

Commenti

  • Rita

    Molto interessante. Grazie!
    Se ho un tema con una sola posizione menu posso utilizzare questa funzione per creare un’altra posizione?
    Aggiungerei la stringa nel file functions.php di un tema child

  • Emiliano

    Ciao, ho creato un tema bootstrap per wordpress partendo da zero, e la barra di navigazione proprio come fai tu nell’articolo includendo però il file bs4navwalker per bootstrap, ed è andato tutto bene, la barra di navigazione è stata creata, il problema è nato quando ho migrato la cartella del sito su un altro hosting, la barra di navigazione è scomparsa, non riesco a capire perchè, cosa ne pensi?

Lascia un commento

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