Walker_Nav_Menu funktioniert nicht im wp_page_menu_args-Filter

Ich muss bestimmte Navigationselemente aus dem Menü ausblenden (basierend auf der Passwortschutzfunktion) und habe Probleme, meinen benutzerdefinierten Walker zum Laufen zu bringen. In der Tat kann ich nicht einmal das Standard-Walker_Nav_Menu zum Laufen bringen, wenn ich es über einen Filter hinzufüge.

Ich habe ein Plugin wie folgt erstellt:

 

Es gibt keinen anderen Code in der Plugin-Datei, nur diese 6 Zeilen. Ich habe dieses Plugin zu einer brandneuen Installation von WordPress ( http://dev.matt-howe.co.uk/wordpress/ ) hinzugefügt und das Menü Rendering ist komplett kaputt – alle Elemente sind auf der gleichen Ebene und keine von ihnen haben irgendeinen Text. Die richtige Anzahl von

  • -Elementen wird generiert und die IDs sind korrekt, aber der Rest ist falsch.

    Ich habe versucht, eine benutzerdefinierte class mit einer .walk () -Methode zu verwenden.

     class myplugin_walker { function walk ( $elements, $to_depth ) { return 'test'; } } function myplugin_page_menu_args( $args ) { $args['walker'] = new myplugin_walker; return $args; } add_filter( 'wp_page_menu_args', 'myplugin_page_menu_args' ); 

    Dies funktioniert genau wie erwartet – das Menü wird als “Test” gerendert. Walker_Nav_Menu versuchen, entweder meine eigene class zu verwenden, die Walker_Nav_Menu , oder die Walker_Nav_Menu selbst, führt dies zu einer flachen Liste leerer

  • -Tags.

    Ich habe ein paar andere Möglichkeiten ausprobiert, um das gleiche Ergebnis zu erzielen – ich habe versucht, Filter für wp_nav_menu_objects und wp_get_nav_menu_items aber keine meiner functionen scheint überhaupt aufgerufen zu werden.

    Werde ich hier den falschen Baum bellen – ist das etwas, das nicht als Teil eines Plugins funktioniert und woanders im Code sein muss? Oder vermisse ich gerade etwas Offensichtliches?

    Solutions Collecting From Web of "Walker_Nav_Menu funktioniert nicht im wp_page_menu_args-Filter"

    Alter Q, aber ich gebe meine 2 Cent.

    1. Die Walker-class sollte Walker_Page erben, nicht Walker_Nav_Menu wie es normalerweise bei Leitfäden im Netz der Fall ist.
    2. Das $item Objekt ist ein Post-Objekt mit post_title und ID . Um die URL auszugeben, müssen Sie get_permalink($item-ID) aufrufen. Bezüglich $item->url wird es nicht gesetzt.
    3. Sowohl theme_location als auch fallback_cb müssen im $args Array von wp_nav_menu nicht vorhanden wp_nav_menu .