WordPress: Menüs in Artikel oder Seiten einbauen

Seit ein paar Versionen unterstützt WordPress ja das Anlegen eigener Menüs und die modernen Themes unterstützen diese in der Regel. Die Menüs werden im Adminbereich unter „Design | Menüs“ angelegt und können standardmäßig in der Navigation und in der Sidebar als Widget eingesetzt werden.

Als ich vor einiger Zeit die Seite Tests, Vergleiche, Tipps & Anleitungen zu eBook-Readern angelegt habe, wollte ich gern das die aktuellen eReaderangebote mit in die Seite integrieren. Dann könnte ich sie über die Menüs pflegen und kann sicher sein, dass sie überall, wo sie eingebunden sind, aktuell bleiben.

Nach ein wenig herumgesuche bin ich bei Stephanie Leary fündig geworden. Dieser Schnipsel wird einfach in die functions.php im Themeverzeichnis eingefügt:

function print_menu_shortcode($atts, $content = null) {
    extract(shortcode_atts(array( 'name' => null, ), $atts));
    return wp_nav_menu( array( 'menu' => $name, 'echo' => false ) );
}
add_shortcode('menu', 'print_menu_shortcode');

Und mit diesem Shortcode kann ich nun alle meine Menüs in Artikel oder Seiten einbinden (Leerzeichen im Menüname funktionieren auch):

[menu name="Der Name des Menüs"]

Das Menü erhält außerdem jeweils eine eigene Klasse, die sich von der in der Sidebar unterscheiden und die per Styesheets entsprechend angesprochen werden kann.

Hat dir der Artikel weitergeholfen? Dann freue ich mich, wenn du mich unterstützt, indem du deine Bestellung über die Partnerlinks (die mit dem * am Ende) abwickelst. Ich bekomme für die Vermittlung ein paar Euro und kann so auch weiterhin schöne Dinge testen und hilfreiche Anleitungen schreiben.

4 Kommentare

Trackback  •  Kommentarfeed

  1. CJ sagt:

    Vielen Dank, endlich mal etwas, was mir als WP-Neuling weitergeholfen hat.

    LG

  2. Dirk sagt:

    Kann man das nicht auch als Plugin umsetzen? Es ist unschön, nach jedem update all die änderungen wieder herstellen zu müssen….

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Hoch