Wie kann ich ein Menü nur auf bestimmten Seiten anzeigen?

10

Anstatt Seitenleisten-Widgets zu verwenden, um anzugeben, auf welcher Seite sie sichtbar sein sollen, möchte ich in den Menüeinstellungen auswählen, ob sie auf bestimmten Seiten angezeigt werden sollen.

Standard-Wordpress-Methode:

Wie es standardmäßig aussieht

Projekte sind also eine Seite und haben einige Unterseiten. Aber was ist, wenn ich 10 weitere dieser Seiten und Unterseiten mit der gleichen Situation habe?

Ich möchte eine zusätzliche Einstellung hinzufügen (eine Liste der Seiten der obersten Ebene):

Wo ich die Einstellung will

Ich kann jedoch keine Dokumentation, Aktionen, Filter usw. finden, wenn diese Einstellungen geladen werden.


quelle
Ich denke, es hängt von Ihrem Thema ab. Aber als Ausgangspunkt sollte codex.wordpress.org/Navigation_Menus helfen !!
Sri
1
Ich habe diesen Link oft gesehen. Es gibt keine Informationen zum Hinzufügen von Einstellungen zu einem Menü. Nur ein benutzerdefiniertes Menü erstellen und anzeigen ...
Autsch. Ich denke, das ist eine native Joomla-Option, anscheinend nicht in WordPress. Für Ihre Site können Sie benutzerdefinierte Ausgabekategorien / pages.php-Dateien erstellen und dort ein eindeutiges benutzerdefiniertes Menü hinzufügen. Dies ist jedoch ein echtes Problem. Sie hätten vier .php-Ausgabeseiten und vier einzigartige Menüs, eines für jede Auswahl oben. Eine einfache Möglichkeit zur Implementierung besteht darin, Seitenleisten-Widgets als primäres Navigationswerkzeug zu verwenden. Das benutzerdefinierte Menü-Widget-Tool ist ziemlich einfach. Erstellen Sie für jede Seite ein Menü, vorausgesetzt, Sie haben für jede Seite eindeutige Vorlagen. Beachten Sie, dass die Seitenleiste nicht das beste Wort ist. Sie können ein Widget überall platzieren.
Zipzit
Mir sind die Seitenleisten und Widgets bekannt. Diese kleinen Website-Teile, die auch nicht mit einer Seite verbunden sind. Ich möchte keine Seitenleisten und Widgets verwenden und habe sie deaktiviert, weil ich keine davon verwende. Wie auch immer, ich denke, die Menüpositionen sind Einstellungen des Menüs, keine Einstellung eines Widgets, das ein Menü enthält.
Ist Ihre Frage nur "Wie füge ich benutzerdefinierte Menüeinstellungen hinzu?" oder ist es auch "Wie verwende ich benutzerdefinierte Menüeinstellungen, um ein Menü nur auf bestimmten Seiten anzuzeigen?"?
Engelen

Antworten:

3

Das ist eine nette Option, aber ich stimme sri zu, im Moment hängt es wirklich von Ihrem Thema ab. Sie können eine Umgehung über is_page () durchführen . Sie müssen so etwas in Ihre page.php-Themendatei schreiben :

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

Wenn Sie die Seitenleiste auch auf anderen Seiten anzeigen möchten, können Sie Logik oder Folgendes verwenden:

if (is_page('projects') || is_page('home') || is_page('post-page'))
Bernie
quelle
Ich kenne keine bessere Lösung, aber das ist in der Codierungswelt wirklich eine schlechte Praxis. Ich denke, dass zumindest vielleicht ein Array oder etwas durchlaufen und dann ein Menütausch durchgeführt wird. Schätzen Sie auf jeden Fall die Antwort. Sigh
BRogers
1

Ich denke, ein Plugin dafür zu verwenden ist besser, so dass Sie die Funktionalität behalten können, auch wenn Sie Themen in der Zukunft ändern. Schauen Sie sich dieses Plugin an. Es macht, was Sie wollen, aber etwas anders, als Sie es verspottet haben.

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

Wenn dies hilft, stimmen Sie bitte ab oder akzeptieren Sie als Antwort. Vielen Dank!

Mark.C
quelle
Ich habe dieses Plugin ausprobiert. Mit diesem Plugin können Sie nur ein Menü für einen bestimmten Beitragstyp auswählen. Ich möchte das Menü für jede Seite auswählen.
Wenn Sie nur ein Menü auf der Website haben und nur bestimmte Links in diesem Menü ausblenden möchten, wenn sich ein Benutzer auf einer bestimmten Seite befindet, führt dieses Plugin dies aus. Nachdem Sie den Beitragstyp ausgewählt haben, auf dem das Menü angezeigt werden soll (Seite ist das, was Sie möchten, oder mehr), gehen Sie zum Bearbeiten einer Seite, und Sie können die Links überprüfen, die ausgeblendet werden sollen. Dieser andere macht es umgekehrt. Sie wählen ein Menü aus einer Metabox auf dem Bildschirm der Bearbeitungsseite aus, sodass Sie mehrere Menüs zur Auswahl benötigen: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C
1

So können Sie dies in Twenty Twelve Themes tun. Header.php wird in ein untergeordnetes Thema kopiert.

<?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; ?>

Erstellen Sie ein neues Menü mit den Elementen, die Sie anzeigen möchten, und tauschen Sie den Namen des bedingten Menüs im obigen Code gegen den Namen Ihres Menüs aus.

Die Namen der menu_class müssen möglicherweise für andere Themen als Twenty Twelve geändert werden.

Quelle

Brad Dalton
quelle
1

Ich weiß, dass dieser Thread alt ist, aber falls jemand nach einer Antwort suchen muss, möchte ich die bedingten Menüs von themify https://themify.me/conditional-menus vorschlagen . Sie wählen das zu verwendende Menü pro Seite, Kategorie, Meta und alles. und es ist kostenlos :) hoffe das hilft

Rosane
quelle
0

Wenn Sie bereit sind, Ihre Widgets erneut zu aktivieren und eine einfache Lösung wünschen, können Sie ein Plugin namens Display Widgets verwenden. Ich habe dies verwendet und verwende den Textteil, in dem Sie Links hinzufügen können, wohin Sie möchten. Es funktioniert unabhängig davon, ob sich die Links auf Ihrer eigenen Site oder auf einer anderen Site befinden. Unter dem Text befindet sich ein Leerzeichen, in dem Sie auswählen können, welche Seiten ein- oder ausgeblendet werden sollen. Sie können die nicht verwendeten Widgets weiterhin entfernen.

Ich habe eine ganze Weile mit den Menüs herumgespielt, bevor ich dieses Plugin gesucht und gefunden habe. Es funktioniert gut.

Sie finden es im Abschnitt Plugins von WordPress.org.

Susan
quelle
Vielen Dank! Aber ich suche kein zusätzliches Plugin. Und ich verwende keine Widgets, da diese schwebenden Website-Teile für einige meiner Kunden zu schwer zu verstehen sind.
0

Eine Möglichkeit wäre, benutzerdefinierte Vorlagen für jedes Menü zu erstellen, das Sie haben. (Dies bezieht sich auf das Kontrollkästchen für die Themenpositionen.) Anschließend wählen Sie auf jeder Seite die Vorlage aus, die verwendet werden soll, und es wird auch das dieser Vorlage zugeordnete Menü verwendet.

https://codex.wordpress.org/Page_Templates

Es gibt Ihnen das gleiche Ergebnis, nach dem Sie suchen, aber anstatt jedem Menü zu sagen, auf welcher Seite es angezeigt wird, sagen Sie jeder Seite, welches Menü darauf angezeigt wird. Ein zusätzlicher Vorteil dieser Vorgehensweise besteht darin, dass Sie nicht versehentlich zwei Menüs anweisen können, sich gleichzeitig am selben Ort zu befinden.

KnightHawk
quelle
Ja, ich habe mir das angeschaut. Der Entwickler weiß jedoch nie, wie viele Menüs der Benutzer benötigt. Ich muss also viele Vorlagen erstellen, um sie alle abzudecken. template_a.php, template_b.php, template_c.phpUsw.
-1

Sie können das Menu Swapper- Plugin verwenden, um dasselbe über das Admin-Panel zu tun. Hier ist die Demo dieses Plugins.

hmjha
quelle