In questo articolo, esploreremo come inserire un menu diverso da quello primario su pagine specifiche del tuo sito WordPress.
WordPress offre nativamente una vasta gamma di opzioni per la gestione dei menu, ma ci sono dei casi in cui è necessario avere un menu personalizzato differente da quello principale.
Ecco alcuni esempi
- Blog o Pagine: Presentare un menu con argomenti o post correlati per mantenere l’utente all’interno di un’area tematica.
- Landing Page: Ridurre distrazioni con un menu semplificato, focalizzando l’utente verso una specifica azione o conversione.
Creare il menu da visualizzare
Prima di tutto crea il menu che vuoi sostituire al menu principale ed individua nell’url l’id del menu. Esempio &menu=ID
Inserire menu personalizzato tramite file functions.php
Mostrare un menu diverso su una pagina con uno specifico slug
function custom_menu_by_slug($args) {
// Controlla se siamo sulla pagina con lo slug desiderato e sulla corretta theme_location
if (is_page('il-tuo-slug') && $args['theme_location'] == 'primary') {
$args['menu'] = 'tuo-menu-slug'; // oppure $args['menu_id'] = 'ID-del-tuo-menu';
}
return $args;
}
add_filter('wp_nav_menu_args', 'custom_menu_by_slug');
In questo esempio:
is_page('il-tuo-slug')
verifica se ci troviamo sulla pagina con lo slug specificato.$args['theme_location'] == 'primary'
verifica se la posizione del menu corrente è quella dell’intestazione (o qualsiasi altra posizione che desideri targetizzare).- Se entrambe le condizioni sono vere, modifica il menu da mostrare.
Sostituisci 'il-tuo-slug'
con lo slug della pagina su cui desideri fare la modifica, 'primary'
con la posizione del menu che vuoi targetizzare e 'tuo-menu-slug'
o 'ID-del-tuo-menu'
con il menu che desideri mostrare.
Modificare il menu basandoti sul template utilizzato da una pagina
Se desideri modificare il menu basandoti sul template utilizzato da una pagina, puoi utilizzare la funzione is_page_template()
.
Ecco come potresti fare:
function custom_menu_by_template($args) {
// Controlla se la pagina attuale utilizza un template specifico e se la posizione del menu è quella desiderata
if (is_page_template('template-name.php') && $args['theme_location'] == 'primary') {
$args['menu'] = 'tuo-menu-slug'; // o $args['menu_id'] = 'ID-del-tuo-menu';
}
return $args;
}
add_filter('wp_nav_menu_args', 'custom_menu_by_template');
is_page_template('template-name.php')
controlla se la pagina attuale sta utilizzando il template chiamato “template-name.php”. Sostituisci 'template-name.php'
con il nome del tuo file template.
Lascia un commento