Come posso visualizzare un menu solo su determinate pagine?


10

Invece di utilizzare i widget della barra laterale per dire su quale pagina dovrebbero essere visibili, mi piace scegliere le impostazioni del menu da visualizzare su pagine specifiche.

Modo Wordpress predefinito:

Come appare predefinito

Quindi progetti è una pagina e ha alcune sottopagine. E se avessi altri 10 di queste pagine e sottopagine con la stessa situazione.

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

Dove voglio l'impostazione

Ma non riesco a trovare documentazione, azioni, filtri ecc. Quando vengono caricate queste impostazioni.


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

1
Ho visto quel collegamento molte volte, non ci sono informazioni sull'aggiunta di impostazioni a un menu. Crea e visualizza solo un menu personalizzato ...

Ahia. Penso che sia un'opzione nativa di Joomla, apparentemente non in WordPress. Per il tuo sito, puoi creare file di categoria / pagine.php di output personalizzati e quindi aggiungere un menu personalizzato unico lì, ma questo è un dolore totale al collo. Avresti quattro pagine .php di output e quattro menu unici, uno per ciascuna selezione sopra. Un modo semplice per implementare è utilizzare i widget della barra laterale come strumento di navigazione principale. lo strumento widget menu personalizzato è piuttosto semplice. Crea un menu per ogni pagina, supponendo che tu abbia modelli univoci per ognuna. Nota, la barra laterale non è la parola migliore. Puoi mettere un widget ovunque.
zipzit

Sono a conoscenza delle barre laterali e dei widget. Queste piccole parti di siti Web che non sono collegate a una pagina. Non voglio usare barre laterali e widget e li ho disabilitati perché non li uso. Ad ogni modo, penso che le posizioni dei menu siano impostazioni del menu, non un'impostazione di un widget che contiene un menu.

La tua domanda è solo "Come faccio ad aggiungere impostazioni di menu personalizzate?" o è anche "Come si utilizzano le impostazioni di menu personalizzate per visualizzare un menu solo su determinate pagine?"?
engelen,

Risposte:


3

Questa è una buona opzione, ma sono d'accordo con Sri, in questo momento dipende davvero dal tuo tema. Puoi aggirare il problema tramite is_page () . Devi scrivere qualcosa del genere sul tuo file del tema page.php :

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

Se vuoi mostrare la barra laterale anche su altre pagine, puoi usare la logica o in questo modo:

if (is_page('projects') || is_page('home') || is_page('post-page'))

Non conosco una soluzione migliore, ma questa è davvero una brutta pratica nel mondo dei codici. Sto pensando che perlomeno magari esegui il loop in un array o qualcosa del genere, quindi esegui lo scambio di menu. Sicuramente apprezzerò la risposta però. Sospiro
BRogers,

1

Penso che usare un plugin per questo sia meglio, quindi puoi mantenere la funzionalità anche se cambi temi in futuro. Dai un'occhiata a questo plugin. Fa quello che vuoi, ma in modo leggermente diverso da come l'hai deriso.

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

Se questo aiuta, vota o accetta come risposta. Grazie!


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

Se hai un solo menu sul sito e vuoi solo nascondere alcuni collegamenti in quel menu quando un utente si trova su una determinata pagina, questo plugin lo fa. Dopo aver selezionato il tipo di post in cui vuoi che il menu (la pagina sia ciò che desideri o più), vai a modificare una pagina e puoi controllare i link che vuoi nascondere. Quest'altro fa il contrario. Seleziona un menu da un metabox nella schermata di modifica della pagina, quindi hai bisogno di più menu tra cui scegliere: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C

1

Ecco come puoi farlo in Venti dodici temi header.php copiati in un tema figlio.

<?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 gli elementi che desideri visualizzare e scambia il nome-menu-condizionale nel codice sopra con il nome del tuo menu.

potrebbe essere necessario modificare i nomi di menu_class per temi diversi da Twenty Twelve.

fonte


1

So che questo thread è vecchio ma nel caso qualcuno avesse bisogno di cercare una risposta per questo, vorrei suggerire i menu condizionali da themify https://themify.me/conditional-menus . Scegli quale menu utilizzare, per pagina, categoria, meta, tutto. ed è gratuito :) spero che questo aiuti


0

Se desideri riattivare i tuoi widget e desideri una soluzione semplice, puoi utilizzare un plug-in chiamato Display Widget. Ho usato questo e uso la parte di testo in cui è possibile aggiungere collegamenti a dove si desidera andare. Funziona se i collegamenti si trovano sul tuo sito o su un altro sito. Ha uno spazio sotto il testo in cui puoi scegliere quali pagine mostrare o nascondere. Puoi comunque rimuovere i widget che non usi.

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

Puoi trovarlo nella sezione Plugin di WordPress.org.


Grazie mille! Ma non sto cercando un plug-in aggiuntivo. E non utilizzo i widget poiché queste parti di siti Web mobili sono troppo difficili da capire per alcuni dei miei clienti.

0

Un'opzione sarebbe quella di creare modelli personalizzati per ogni menu che hai. (Fa riferimento alla casella di controllo delle posizioni dei temi) Quindi, in ogni pagina, scegli il modello che desideri che utilizzi e utilizzerà anche il menu associato a quel modello.

https://codex.wordpress.org/Page_Templates

Ti dà lo stesso risultato che penso tu stia cercando, ma invece di dire a ciascun menu su quale pagina mostra, dirai ad ogni pagina quale menu mostrerà su di essa. Un ulteriore vantaggio nel farlo in questo modo è che non c'è modo per te di dire accidentalmente a due menu di trovarsi nello stesso posto allo stesso tempo.


Sì, ho visto questo. Ma lo sviluppatore non sa mai di quanti menu ha bisogno l'utente. Quindi devo creare molti modelli per coprirli tutti. template_a.php, template_b.php, template_c.phpEcc

-1

Puoi usare il plug-in Menu Swapper per fare la stessa cosa dal pannello di amministrazione. Ecco la demo di questo plugin.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.