1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Globale Variable innerhalb einer Funktion überschreiben

Dieses Thema im Forum "Allgemeines" wurde erstellt von Redmarketing, 26. Juni 2014.

  1. Redmarketing

    Redmarketing New Member

    Registriert seit:
    17. April 2014
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    das Problem ist folgendes: Ich habe in der functions.php eine Funktion, welche es ermöglicht die 2 Ebene eines Menüs seperat anzeigen zu lassen (Quellcode hier http://christianvarga.com/how-to-get-submenu-items-from-a-wordpress-menu-based-on-parent-or-sibling/). Das Funktioniert auch, allerdings ist es aus designtechnischen Gründen nicht möglich, das ganze ohne div-Gerüst drum herum zu bauen. Wenn man jetzt aber in einem Menüpunkt ist, der keine 2 Ebene hat, wird das Gerüst natürlich dennoch angezeigt. Es muss also davor eine if-Abfrage geben, die filtert, ob es ein submenu gibt oder nicht. Die entsprechende Wordpress-Funktion, wp_nav_menu, gibt leider ein echo zurück, was leider verhindert, dass man sie auf Inhalt prüfen kann (oder geht das??).

    Meine Idee war die Funktion, die das Submenu separiert zu benutzen (siehe Link) und in die dortige if-Anweisung eine globale Variable zu setzen. Diese wollte ich dann im Header wieder aufrufen. Leider lässt sich die Variable innerhalb der Funktion nicht nach außen sichtbar überschreiben...

    Hat jemand eine Idee?
     
  2. Redmarketing

    Redmarketing New Member

    Registriert seit:
    17. April 2014
    Beiträge:
    4
    Zustimmungen:
    0
    Also, falls jemand mal vor dem gleichen Problem stehen sollte, man kann das Gerüst auch über wp_nav_menu direkt erstellen. Siehe die Referenz im Wordpress-Codex.

    Dennoch wüsste ich gerne, wieso das mit der globalen Variable nicht klappt, dafür gibt es globale Variablen schließlich :)
     
  3. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ist jetzt reichlich schwer zu verstehen, wie es mir erscheint. Mein erster Gedanke ist zumindest, wozu ist

    Menu Item CSS Classes

    gut, denn für mich sieht das so aus, dass ein <li>Element</li> nur dann erzeugt wird, wenn ein Item vorhanden ist. Das Grundgerüst besteht doch nur aus einen Div oder Nav-Bereich um diese <ul><li>Element</li><li>Element</li></ul>?

    Da ich es bisher aber nur mit einfachen Menüs und wp_nav_menu($defaults) zu tun hatte, verstehe ich ohnehin nicht viel.
    Wenn Du innerhalb eine if-Abfrage eine globale Variable setzt, dann ist das schon ein Widerspruch in sich. Wie kann die gültig sein, wenn die if sich nicht angesprochen fühlt? Soweit reichen meine Gedanken leider im Augenblick nicht, denke aber, dass die bei false nicht zu sehen ist und somit nicht global sein kann.
     
    #3 Melewo, 26. Juni 2014
    Zuletzt bearbeitet: 26. Juni 2014
  4. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Für was ist dieser Parameter gut?
    http://codex.wordpress.org/Function_Reference/wp_nav_menu#Parameters

    Eine globale Variable wird eigentlich vor einem if-Statement gleich am Anfang einer Funktion global gemacht. Verhält sich aber auch dann nicht wie eine superglobale Variable, die immer und überall vorhanden ist.
     
    #4 Melewo, 26. Juni 2014
    Zuletzt bearbeitet: 26. Juni 2014
  5. Redmarketing

    Redmarketing New Member

    Registriert seit:
    17. April 2014
    Beiträge:
    4
    Zustimmungen:
    0
    Danke für die Antwort.
    Zuallererst mal: Mit 'Gerüst' meinte ich alles was um li und ul kommt. Manchmal brauch man mehrere Container, um etwas zu stylen. Ich hatte zuvor ein Gerüst außerhalb der Funktion erstellt, bis mir auffiel, dass das trotzdem angezeigt wird, auch ohne submenu :)

    Zu der echo und return-Sache: Genau sowas hatte ich gesucht, bin eben nur zuerst auf die Lösung mit dem Gerüst innerhalb der Funktion gekommen. Aber gut zu wissen :D

    Zur globalen Variable: Die habe ich natürlich außerhalb als global definiert und wollte sie dann innhalb der if-Anweisung überschreiben. Hab auch bei beiden Möglichkeiten was überschrieben, so das eine hätte greifen müssen. Das hat aber wie gesagt nicht funktioniert. Was meinst du denn mit 'superglobal'?
     
  6. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ich meinte so etwas, die verhält sich wie andere Superglobals, also wie $_SERVER, $_GET oder $_POST und was es noch an Superglobals gibt und die ist überall in einem Script verfügbar.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    http://www.php.net/manual/de/reserved.variables.globals.php

    Die eine Hälfte vergisst man wieder und die andere Hälfte versteht man erst nach einem dreitägigen Test. Was man nicht testet und nicht vergisst, das findet man dafür erst nach drei stündigen Suchen wieder, jedoch nur um festzustellen, dass es damit eigentlich auch nicht richtig funktionieren kann.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden