Come posso visualizzare un menu solo su determinate pagine?

20 giu 2014, 10:41:50
Visualizzazioni: 70.5K
Voti: 11

Invece di utilizzare i widget della barra laterale per specificare su quali pagine dovrebbero essere visibili, preferisco scegliere nelle impostazioni del menu dove questo debba apparire su pagine specifiche.

Modo predefinito di WordPress:

Come appare l'interfaccia predefinita di WordPress per i menu

Quindi "progetti" è una pagina che ha alcune sottopagine. Ma cosa succede se ho circa altre 10 pagine e sottopagine con la stessa situazione?

Vorrei aggiungere un'impostazione extra (un elenco delle pagine di livello superiore):

Dove vorrei aggiungere l'impostazione nel menu

Ma non riesco a trovare documentazione, action, filter o altro su quando queste impostazioni vengono caricate.

6
Commenti

Penso che dipenda dal tuo tema. Ma come punto di partenza http://codex.wordpress.org/Navigation_Menus dovrebbe aiutare!!

sri sri
20 giu 2014 11:00:46

Ho visto quel link molte volte, non ci sono informazioni sull'aggiunta di impostazioni a un menu. Solo su come creare e visualizzare un menu personalizzato...

User User
20 giu 2014 11:01:56

Accidenti. Penso che sia un'opzione nativa di Joomla, apparentemente non presente in WordPress. Per il tuo sito, potresti creare file di output personalizzati category/pages.php e poi aggiungere un menu personalizzato unico lì, ma sarebbe una vera scocciatura. Avresti quattro file .php di output e quattro menu unici, uno per ogni selezione sopra. Un modo semplice per implementarlo è usare i widget della sidebar come strumento di navigazione principale. Lo strumento del widget per menu personalizzati è piuttosto semplice. Crea un menu per ogni pagina, assumendo che tu abbia template unici per ognuna. Nota: sidebar non è la parola migliore. Puoi posizionare un widget ovunque.

zipzit zipzit
20 giu 2014 11:10:32

Sono consapevole delle sidebar e dei widget. Queste piccole parti del sito che non sono connesse a una pagina. Non voglio usare sidebar e widget e li ho disabilitati perché non ne uso nessuno. Comunque, penso che le posizioni dei menu siano impostazioni del menu, non un'impostazione di un widget che contiene un menu.

User User
20 giu 2014 11:23:18

La tua domanda è solo "Come aggiungo impostazioni personalizzate per i menu?" o è anche "Come uso impostazioni personalizzate per i menu per visualizzare un menu solo su determinate pagine?"?

engelen engelen
20 giu 2014 15:47:02

Beh, non so come aggiungere un'impostazione personalizzata per i menu, quindi perché la mia domanda dovrebbe essere come usare l'impostazione?

User User
20 giu 2014 15:55:24
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 7
1

È un'opzione interessante, ma concordo con sri, al momento dipende molto dal tuo tema. Puoi trovare una soluzione alternativa utilizzando is_page(). Devi scrivere qualcosa di simile nel file del tema page.php:

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

Se vuoi mostrare la sidebar anche su altre pagine, puoi usare l'operatore logico or in questo modo:

if (is_page('projects') || is_page('home') || is_page('post-page'))
14 set 2014 12:31:15
Commenti

Non conosco una soluzione migliore, ma questa è davvero una pessima pratica nel mondo della programmazione. Penso che come minimo si potrebbe ciclare attraverso un array o qualcosa di simile e poi eseguire lo scambio del menu. Apprezzo comunque la risposta. Sigh

BRogers BRogers
4 feb 2016 08:55:23
0

Ecco come puoi farlo nel file header.php del tema Twenty Twelve copiato in un child theme.

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

Crea un nuovo menu con le voci che vuoi visualizzare e sostituisci conditional-menu-name nel codice sopra con il nome del tuo menu.

I nomi delle classi del menu potrebbero dover essere modificati per temi diversi da Twenty Twelve.

Fonte

5 nov 2014 23:48:02
2

Penso che usare un plugin per questo sia meglio, così puoi mantenere la funzionalità anche se cambi tema in futuro. Dai un'occhiata a questo plugin. Fa quello che vuoi, ma in modo leggermente diverso da come lo avevi progettato.

https://wordpress.org/plugins/page-specific-menu-items/

Se questo ti è stato utile, per favore votalo o accettalo come risposta. Grazie!

14 lug 2014 21:42:54
Commenti

Ho provato questo plugin. Con questo plugin, puoi selezionare solo un menu per un tipo di post specifico. Io vorrei selezionare il menu per ogni pagina.

User User
15 lug 2014 09:33:46

Se hai solo un menu su tutto il sito e vuoi solo nascondere alcuni link in quel menu quando un utente è su una certa pagina, questo plugin lo fa. Dopo aver selezionato il tipo di post su cui vuoi il menu (pagina è quello che vuoi, o altro), vai a modificare una pagina e puoi selezionare i link che vuoi nascondere. L'altro funziona al contrario. Selezioni un menu da un metabox nella schermata di modifica della pagina, quindi hai bisogno di più menu tra cui scegliere: http://wordpress.org/plugins/ce-wp-menu-per-page/

Mark.C Mark.C
15 lug 2014 22:46:43
0

Sono consapevole che questo thread sia vecchio, ma nel caso qualcuno avesse bisogno di una risposta a questa domanda, vorrei suggerire i menu condizionali di Themify https://themify.me/conditional-menus. Puoi scegliere quale menu utilizzare, per pagina, categoria, meta, tutto. Ed è gratuito :) spero che questo possa aiutare

14 nov 2015 19:44:41
1

Se sei disposto a riattivare i tuoi widget e cerchi una soluzione semplice, puoi utilizzare un plugin chiamato Display Widgets. Io l'ho usato e sfrutto la parte testuale dove puoi aggiungere i link alle pagine che desideri raggiungere. Funziona sia che i link puntino al tuo sito che a un altro sito. Ha uno spazio in basso sotto il testo dove puoi scegliere su quali pagine mostrare o nascondere il widget. Puoi comunque rimuovere i widget che non utilizzi.

Ho sperimentato con i menu per un bel po' prima di cercare e trovare questo plugin. Funziona bene.

Puoi trovarlo nella sezione Plugin di WordPress.org.

20 giu 2014 16:56:27
Commenti

Grazie mille! Ma non sto cercando un plugin aggiuntivo. E non utilizzo i widget poiché queste parti fluttuanti del sito sono troppo difficili da capire per alcuni dei miei clienti.

User User
20 giu 2014 17:19:34
1

Un'opzione sarebbe quella di creare template personalizzati per ogni menu che hai. (Questo si riferisce alla casella di selezione delle posizioni del tema) Poi, su ogni pagina, scegli il template che vuoi utilizzare e utilizzerà anche il menu associato a quel template.

https://codex.wordpress.org/Page_Templates

Ti dà lo stesso risultato che penso tu stia cercando, ma invece di dire a ogni menu su quale pagina deve apparire, dirai a ogni pagina quale menu deve mostrare. Un vantaggio aggiuntivo di fare in questo modo è che non c'è modo di dire accidentalmente a due menu di apparire nello stesso posto contemporaneamente.

23 lug 2014 18:28:56
Commenti

Sì, ho esaminato questo aspetto. Ma lo sviluppatore non sa mai quanti menu l'utente avrà bisogno. Quindi devo creare molti template per coprirli tutti. template_a.php, template_b.php, template_c.php ecc.

User User
24 lug 2014 09:45:40
0
-1

Puoi utilizzare il plugin Menu Swapper per fare la stessa cosa dal pannello di amministrazione. Ecco la Demo di questo plugin.

17 apr 2016 22:32:23