Fatal error: Cannot redeclare register_nav_menus() mit Menüs

  • Hallo Zusammen,

    ich habe bei mir in meiner Entwicklungsumgebunt (XAMPP v3.2.1 unter Windows 7 SP1) eine frische WordPress 3.6-Installation aufgesetzt und gestartet, eine Probe-Webseite aufzubauen. Nun wollte ich nach Anleitung des Buches "Wordpress 3 - Das umfassende Handbuch" von "Galileo Computing" mein Theme Menü-Fähig (Design -> Menü) machen. Dazu füge ich in der function.php folgenden Code ein:

    Das Header-Menü platziere ich mit folgender Code-Zeile am gewünschten Platz:

    PHP
    <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>

    Das Footer-Menü platzere ich eben angepasst mit 'footer-menu'. Das Seltsame ist nun, dass seit ich diesen Code in der functions.php eingefügt habe, bekomme ich folgende Fehlermeldung:

    Code
    Fatal error: Cannot redeclare register_nav_menus() (previously declared in D:\xampp\htdocs\kanzlei\wp-includes\nav-menu.php:73) in D:\xampp\htdocs\kanzlei\wp-content\themes\kanzlei\functions.php on line 8

    Die Webseite läuft dann überhaupt nicht mehr. Weder Front- noch Backend. Erst wenn ich den entsprechenden Code in der functions.php wieder ausblende, läuft es wieder. Allerdings wird dann sowohl im Header als auch im Footer dasselbe Menü angezeigt, nach Reihenfolgezahl, die direkt im Seiteneditor eingegeben werden kann.

    Was mache ich hier noch falsch?

    mfg
    Simon

    • 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

  • Ich kenne die Mitteilung 'Cannot redeclare' nur von Kopien einer Funktion, weil ich ab und an vom letzten Bearbeitungstand eine Kopie anlege, um beim Weiterarbeiten nicht wieder alles zu vermurksen. Aus diesen Kopien muss ich dann zum Beispiel 'Plugin Name' löschen, weil es ansonsten zwei oder mehr Plugins geben würde, welche den gleichen Bezeichner für eine Funktion benutzen würden.

    Doch auch bei anderen PHP Scripts ist mir das bereits passiert, dass ich eine Funktion doppelt in einem Script notierte und dann so eine freundliche Mitteilung erhielt, dass ich doch eine von beiden löschen möchte.

  • Und wenn ich mir das Beispiel ansehe, dann hast Du das wie in OOP üblich mit Klasse und gleichnamigen Konstruktor notiert, obwohl das irgenwie dann doch nicht so ganz nach einer Klasse aussieht. Doch wo wird die register_my_menus definiert, die Du mit add_action einhaken willst? Ersetze mal nav durch my in der ersten Zeile, dann könnte es klappen.

    Einmal editiert, zuletzt von Melewo (12. August 2013 um 22:04)

  • Und da die register_nav_menus bereits von WP in der Datei wp-includes/nav-menu.php definiert wird, kannst Du diesen Namen kein zweites Mal als Bezeichner für eine eigene Funktion verwenden, ohne dass eine derartige Fehlermeldung ausgegeben würde.

    Das mit der Ähnlichkeit mit einer Klasse war nicht ganz ernst gemeint, denn aus einer Funktion wird nun einmal keine Klasse, sieht nur aus wie bei einer Klasse und einem gleichnamigen Konstruktor. Doch wenn Du Dir angewöhnst, da gleich eigene Namen als Bezeichner für Deine eigenen Funktionen zu vergeben, kommen derartige Missverständnisse zwischen Dir und PHP weniger häufig vor, da der Unterschied deutlicher wird. Beispiel:

  • Guten Morgen Melowo,

    vielen dank für die Antwort! Eigentlich hätte ich da auch selbst drauf kommen können *michselbstpatsch* :-)

    Wenn ich den Code wie folgt ändere, funktioniert's ohne Probleme:

    Vielen Dank!

    mfg
    Simon

Jetzt mitmachen!

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