WordPress Menu in Abhängigkeit von URL Parameter einblenden
-
Hallo zusammen
Ich möchte abhängig von einem URL Parameter WordPress dazu bringen, ein anderes Menu einzubinden! Ein und dieselbe Seite braucht je nach Bedingung ein anderes Menu. Mein Theme (Avada) kann zwar jeder Seite ein anderes Menu zuordnen, aber eben nicht dynamisch.Ich habe herausgefunden, dass ich lediglich den Parameter ‚menu‘ in dieser Funktion:
wp_nav_menu( array $args = array() )
Parameters #Parameters $args (array) (Optional) Array of nav menu arguments. 'menu' (int|string|WP_Term) Desired menu. Accepts a menu ID, slug, name, or object.
ändern müsste!? Die korrekten IDs der Menus habe ich aus der Datenbank. Die Parameter Abfrage und if then sind kein Problem. Aber wo und wie kann ich diesen Parameter umschreiben? Ich würde dann einfach die DB Abfrage der Menu ID’s durch feste IDs ersetzen. Könnte mir da jemand einen Schlag auf den Hinterkopf geben? 🙂
LG und Dank im Voraus – Bruno
-
Hallo,
beschreibe doch mal bitte, was du genau erreichen willst.
Wir können dir bei gekauften Themes (hier Avada) oder Plugins so gut wie gar nicht helfen, weil sie uns nicht zur Verfügung stehen. Wir müssten sonst bei jeder Frage erst einmal das passende Theme oder Plugin kaufen, uns dort einarbeiten und dann kostenlos den Support anbieten, für den du beim Kauf eigentlich bezahlt hast. Du solltest dich in dem Fall an den Entwickler wenden. Lies bitte auch mal in der FAQ (B 5.) zu diesem Thema.
Viele Grüße
Hans-GerdHi Hans-Gerd
Das mit Avada war nur eine Zusatzinfo. Es geht darum, dass die Seite 3 Welten hat. Die Seite Kontakt muss also 3 andere Menus haben. Es macht echt keinen Sinn das zu hinterfragen 🙂Es ist nur die Frage, wo WordPress die Tabelle _terms abfragt und die ID an den Parameter ‚menu‘ übergibt. Daraus ergibt sich, welches Menu WordPress z.B. im Top einblendet. Die Überlegung ist nun, diesen Wert nach URL Parametern zu verändern und so jeweils das gewünschte Menü einzublenden ohne schon den genauen Syntax zu kennen dann etwa so:
<?php $caller = $_GET['caller']; if ($caller == "ges") {'menu' = 1;} elseif ($caller == "aca") {'menu' = 2;} elseif ($caller == "aca") {'menu' = 3;} ?>
Das müsste unabhängig vom Theme funktionieren, denn wenn man händisch festlegen kann, welches Menu wo eingeblendet wird, müsste man das ja auch per Code schaffen? Ich hoffe das hilft?
LG BrunoEs macht echt keinen Sinn das zu hinterfragen
Ach naja, hinterfragen … Wir möchten gerne erst mal verstehen, was du möchtest.
Mit
register_nav_menu()
kannst du jede Menge Menü-Plätze registrieren, denen du individuelle Menüs zuweisen kannst. Das hat erst einmal nichts mit einem GET-Parameter zu tun. Du kannst den Menüs auch gleich etwas aussagefähigere Namen zuweisen als „menu 1“, „menu 2“ usw.In der Doku zur Funktion
wp_nav_menu()
gibt es gleich als erstes ein Code-Beispiel, wie du einem angemeldeten/nicht angemeldeten Benutzer unterschiedliche Menüs anzeigen kannst:wp_nav_menu( array( 'theme_location' => is_user_logged_in() ? 'logged-in-menu' : 'logged-out-menu' ) );
oder umgangssprachlich ausgedrückt „Für
theme_location
nimm, wenn der User angemeldet ist, daslogged-in-menu
, sonst nimm daslogged-out-menu
. Der Code gehört dann an die passende Stelle imheader.php
-Template deines Child-Themes.Das lässt sich dann auch sinngemäß auf einen GET-Parameter umwandeln. Denk aber daran, auch ein Menü anzubieten, wenn kein oder der falsche GET-Parameter übergeben wird.
Übrigens helfen wir hier gerne bei Anwendungsfragen. Für Fragen zur Programmierung bist du bei StackExchange besser aufgehoben. 🙂
- Das Thema „WordPress Menu in Abhängigkeit von URL Parameter einblenden“ ist für neue Antworten geschlossen.