Support » Allgemeine Fragen » 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

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • 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-Gerd

    Thread-Ersteller bruno2000

    (@bruno2000)

    Hi 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 Bruno

    Moderator Bego Mario Garde

    (@pixolin)

    Es 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, das logged-in-menu, sonst nimm das logged-out-menu. Der Code gehört dann an die passende Stelle im header.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. 🙂

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)