Elemente per php der Navigation hinzufügen

  • Hallo zusammen,

    ich würde gerne - unter WP 4.4 - meinem Hauptmenü einen weiteren Listeneintrag per php hinzufügen. Nach etwas googeln bin ich auf den Filter 'wp_nav_menu_items' gestoßen. Jedoch scheint dieser unter der neuesten WP Version nicht mehr als Filter zu existieren https://codex.wordpress.org/Plugin_API/Filter_Reference
    Folgenden Code habe ich in meiner functions.php eingetragen, in der Hoffnung, dass der Filter doch noch existiert:

    PHP
    // Filter wp_nav_menu() to add additional links and other output
    function new_nav_menu_items($items) {
        var_dump($items);
        $homelink = '<li class="home"><a href="' . home_url( '/' ) . '">' . __('Home') . '</a></li>';
        $items = $homelink . $items;
        return $items;
    }
    add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );

    Der Code stammt von [COLOR=#0000ff]hier[/COLOR] (2012!)

    Das Menü wird erstellt mit

    PHP
    wp_nav_menu();

    Die Ausgabe erfolgt jedoch ohne meinen statischen Link :( Habt ihr eine Idee, welchen Filter ich stattdessen verwenden sollte? Oder mache ich etwas anderes falsch?

    Vielen Dank!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Lege doch einfach übers Backend im Menü selber einen Link auf Home an. Leichter geht es nicht.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Das möchte ich nicht, da der "Link" nur ein Trigger für jQuery wird bzw nicht den gleichen HTML-Aufbau hat, wie die restlichen Links und keine tatsächliche Verlinkung darstellt. Ich könnte natürlich den neuen Menüpunkt dann auch direkt per jQuery einfügen, aber das erscheint mir zu unsauber...

  • hier findest du einen Weg aufgezeigt, der sehr gut funktioniert

    http://galengidman.com/2014/05/08/add…to-wp_nav_menu/

  • 'wp_nav_menu_items' gestoßen. Jedoch scheint dieser unter der neuesten WP Version nicht mehr als Filter zu existieren

    Doch tut er

    Code
    $items = apply_filters( 'wp_nav_menu_items', $items, $args );

    Möglicherweise gibt es mehrere Menu Locations und Walker. Möglicherweise bist Du zu früh im Hook:

    Code
    add_filter( 'wp_nav_menu_items', 'new_nav_menu_items', 50, 2 );
    function new_nav_menu_items( $items, $args ) {
        echo '<pre>' . print_r( $items, true ) . '</pre>';
        return $items;
    }

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.


  • Möglicherweise gibt es mehrere Menu Locations und Walker. Möglicherweise bist Du zu früh im Hook:

    Der echo aus der Funktion wird leider nie Ausgeben. Menu Locations gibt es auch nur eine. Wie kann ich denn später im Hook eingreifen? Der Filter steht am Ende meiner functions.php , müsste also zum spätmöglichsten Zeitpunkt für 'wp_nav_menu_items' registriert werden oder?

    Den Hinweis von Monika werde ich testen, jedoch interessiert mich jetzt auch, wieso der Filter bei mir nicht zieht, wenn es ihn ja noch gibt :-D

  • Wie kann ich denn später im Hook eingreifen?

    ??? Ich habe die Funktion doch bereits gepostet. Die 50 ist die Priorität. Je höher die Zahl, desto später der Aufruf.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • ??? Ich habe die Funktion doch bereits gepostet. Die 50 ist die Priorität. Je höher die Zahl, desto später der Aufruf.

    Ah ok, das wusste ich noch nicht :oops: Aber daher, dass der echo nicht ausgeben wird, scheint der Zeitpunkt des Aufrufes ja erstmal nicht das Problem zu sein oder?

  • Erhöhe die 50 auf 999. Der Filter funktioniert.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!