Come posso mostrare menu diversi per pagine diverse?

9 nov 2011, 10:27:01
Visualizzazioni: 25.7K
Voti: 3

Ho un sito web che ha un menu principale (orizzontale in alto) così strutturato:

Menu principale
 - Home
 - Chi Siamo
 - Contatti

Nella pagina Home ho un link alla pagina "Azienda" come questo www.xyz.com/company.

Quando mi trovo sulla pagina aziendale voglio che il mio sito web cambi le voci del menu e utilizzi questo:

Menu differente
 - Home (stesso link della Home page che porterà l'utente su www.xyz.com)
 - Promotori
 - Galleria
 - Mappe

Penso di poterlo fare utilizzando i Conditional Tags di WordPress, ma non so davvero da dove iniziare.

1
Commenti

Esiste un plugin che fa esattamente quello che ti serve. Prova questo: http://wordpress.org/extend/plugins/widget-logic/

User User
31 gen 2013 20:14:41
Tutte le risposte alla domanda 5
0

Puoi provare in questo modo. Ora che stiamo parlando di pagine, puoi impostare un template separato per la pagina che necessita di un menu diverso. È qui che la più recente funzionalità dei menu di WordPress si dimostra davvero utile.

Per prima cosa, se stai utilizzando la nuova funzionalità dei menu di WordPress, inserisci questo al posto del tuo menu corrente:

<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>

Successivamente, inserisci questo all'inizio del file del template che utilizzerai per la pagina. Questo dice a WordPress che si tratta di un template per pagina.

<?php
/*
 Template Name: Nome del tuo template qui
*/
?>

Poi posiziona questo nel tuo template dove dovrebbe andare il menu per questo template:

<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' =>    'template_menu' ) ); ?>

Ora dobbiamo assicurarci che vengano attivati. Nel file functions.php del tuo tema dovrai inserire questo:

// Questo tema utilizza wp_nav_menu() in due posizioni.  
register_nav_menus( array(  
  'primary' => __( 'Navigazione Principale', 'your_theme_name' ),  
  'template_menu' => __('Navigazione Template', 'your_theme_name')  
) ); 

Una volta fatto tutto ciò, tutto quello che devi fare è andare nella tua bacheca > Aspetto > Menu e creare i tuoi menu lì. Una volta creati, salva e sulla sinistra ti verrà data l'opzione di posizionare quale menu dove tramite i menu a discesa.

Dopo che tutto è stato configurato, quando imposti una nuova pagina tutto ciò che devi fare è selezionare il template che vuoi utilizzare.

Spero che questo ti sia utile, se hai domande chiedi pure.

9 nov 2011 23:22:57
0

Menu diversi in pagine diverse utilizzando un campo personalizzato nella pagina --> functions.php

function shortcode_nav_menu_args( $args = '' ) {
    //se esiste il campo personalizzato cp_menu nella pagina ottiene l'ID del menu (numero)
    //altrimenti ottiene il menu predefinito
    $menu = get_post_meta(get_the_ID(), 'cp_menu', true);
    if(isset($menu)) { 
        $args['menu'] = $menu; 
    }
    return $args;
}
add_filter( 'wp_nav_menu_args', 'shortcode_nav_menu_args' );
17 mar 2017 13:55:26
0

Puoi utilizzare il plugin gratuito Conditional Menus. Lo uso nei miei progetti e funziona sempre perfettamente!

11 feb 2020 15:28:59
1

I tag condizionali sarebbero probabilmente la strada da seguire. Come stai chiamando il tuo menu? Suppongo wp_list_pages()?

Se è così, puoi utilizzare l'argomento exclude, con qualcosa come il seguente (ovviamente modifica i numeri delle pagine e i tag condizionali in base alle tue esigenze) -

<?php
if(is_front_page()) :
    $exclude = '10,11,12';
elseif(is_page(15)) :
    $exclude = '1,2,3';
endif;
wp_list_pages('title_li=&depth=1&exclude=' . $exclude);
?>
9 nov 2011 12:50:19
Commenti

Ma il mio file ha questo codice wp_list_pages('title_li=&depth=0&exclude=' . get_inc_pages("pag_exclude_") .'&sort_column=menu_order'); ?>

Anshul Anshul
10 nov 2011 08:56:59
0

Esiste un plugin per questo che sembra promettente.

24 ott 2014 00:00:16