wp-note

Sviluppo Siti Web

Come inserire un menu diverso su pagine specifiche

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:

  1. is_page('il-tuo-slug') verifica se ci troviamo sulla pagina con lo slug specificato.
  2. $args['theme_location'] == 'primary' verifica se la posizione del menu corrente è quella dell’intestazione (o qualsiasi altra posizione che desideri targetizzare).
  3. 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.


Pubblicato

in

,

da

Tag:

Commenti

Lascia un commento

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