Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

Menüs auf Seiten/Pages ausgeben mit Shortcode in Wordpress

#Tutorials#Wordpress

Ich wollte eine Sitemap meiner Webseite haben, die einfach alle Punkte auf einmal aus meinem selbst erstellten Hauptmenü ausgibt. Das musste natürlich auf einer Seite/Page sein und so habe ich mich umgeguckt und eine Funktion gefunden, die genau das bewerkstelligt. Die Funktion findet ihr unten. Fügt einfach den Code in eure function.php ein und schon habt ihr alles installiert was ihr braucht. Danach einfach [menu name="Name eures Menüs"] in eure Seite/page einfügen und schon kommt das gewünschte Menü an der Stelle heraus.


<?php
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');

?>

Kommentare

  • Franz
    In welche Datei genau muss das rein? Eine Datei "function.php" gibt es bei mir gar nicht, dafür mehrere Dateien mit dem Namens "functions.php". Ich nehme an, dass da in der Anweisung ein "s" fehlt? Aber welche der "functions.php" ist die richtige? Ich möchte ja nichts zerballern...
    Antworten
  • Ben
    Hi,

    vielen Dank, das Script hat auf jeden Fall auf meiner Seite funktioniert. Leider nutze ich jedoch ein gekauftes Theme (BeTheme), und jedenfalls funktionierte nach Einfügen des Snippets in der functions.php das gesamte WP Dashboard nicht mehr...Die Seite hingegen funktionierte einwandfrei, samt Menu call.

    Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at
    /xxx/wp-content/themes/betheme/functions.php:130)
    in /xxx/wp-includes/pluggable.php on line 1179

    Ich habe die Datei über den WP eigenen Editor bearbeitet, und das Gefühl, dass alleine bereits darin eine mögliche Fehlerquelle liegt. Oder habe ich eventuell nur eine falsche Syntax benutzt? Normalerweise müsste das Snippet doch einfach innerhalb des bestehenden Funktionenbereichs (?php bis ?> ) eingefügt werden, getrennt durch }, oder tatsächlich komplett, so wie oben dargestellt?

    Besten Dank!!! Toll, dass es solche Seiten wie diese hier gibt!
    Antworten
    • Andre Knieriem
      Hi Ben,

      es kann einfach an dem Theme liegen. Vielleicht musst du das Skript an eine andere Stelle in der functions.php packen?

      Grüße
      André
      Antworten
      • Sushi
        Ich arbeite mich auch grad durch die Menüs und mir fällt hier ein Sache auf: ich habe gehört, dass man in der functions.php den php tag nicht abschließen darf... (" ?> ")
        Antworten
  • Paul
    Super, wieder etwas leicht hinzugefügt ohne wie andere 1.000 Plugins zu nutzen. Danke für das Snippet!
    Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

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

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.