Verständnisproblem Variablen und Loop

  • Hallo an alle,
    ich doktor ja schon ne Weile an meiner ersten Wordpressseite rum und lerne immer wieder dazu. Jetzt hab ich aber mal ein grundlegendes Verständnisproblem und hoffe, mir kann das mal jemand erklären.
    Für eine Seite, auf der unsere CDs vorgestellt werden arbeite ich mit drei Loops bzw. Querys und static Pages.
    Bei Klick auf eine CD wird in der Hauptloop nicht die Haupt-Page sondern die erste Sub-Page angezeigt. In der Sidebar habe ich das Sub-Menü untergebracht, welches mit einer Datenbankabfrage alle CDs mit ihren Covern darstellt. Darunter steht dann der Inhalt der eigentlichen Seite, nähmlich die Titel-Liste der angeklickten CD.
    Das funktioniert komischerweise, obwohl die CD-Navi-Abfrage doch eigentlich das $post neu belegen müßte. Ich bekomme aber am Ende mit "the_content" meine Page dargestellt.

    OK, jetzt der zweite Teil: Neben den CD-Titeln sind Links zu Unterseiten mit Texten der Songs. Das heißt, es wird nicht die CD-Seite aufgerufen, sie soll aber wieder ganz am Ende in der Sidebar ausgegeben werden. Das hab ich so gemacht, daß ich in der Loop die übergeordnete Seite abfrage und in die Variable $mutter_ID speicher. Jetzt dachte ich, ich brauche nur am Ende in der Sidebar diese Variable wieder auslesen und kann dann die Haupt-Page anzeigen. Ich benutz dafür übrigens das PlugIn "Improved Include Page". Die Variable $mutter_ID ist da aber komischerweise "Null". Warum? Sie wird doch gar nicht mehr angetastet vorher.
    Erst als ich in vor der DB-Abfrage vor der CD-Navigation nochmal

    PHP
    <?php $mutter_ID = $post->post_parent;?>

    eingebe, also am Anfang der Sidebar, ist die Variable auch unten in der Sidebar mit dem richtigen Wert gespeichert. Ich habe also die Variable zweimal mit dem Wert gefüllt, einmal in der Hauptloop und am Anfang der Sidebar. Und das versteh ich nicht.

    Das war jetzt ne Menge Text. Vielleicht hat ja jemand, der bis hierher gelesen und das auch noch verstanden hat Muße und Zeit mir das mal kurz zu erklären. Warum behält die von mir definierte Variable den Wert, den sie in der ersten Loop bekommen hat nicht bis in die Sidebar?
    Anzuschauen ist das ganze hier: http://www.17hippies.de/wordpress/inde…-live-in-berlin (alles noch Baustelle, nicht wundern...)

    Grüße und Danke,
    kru:sko

    • 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

  • ein Loop ist eine geschlossene Sache für sich

    so habe ich es bis dato verstanden,--
    einmal zugemacht ist er zugemacht,

    sonst könnt man ja nicht viele Loops miteinander verwenden, weil sie sich sonst gegenseitig in die Quere kämen im wahrsten Sinn des Wortes

    lg nächtlich verwuselte Antwort

    ;)

  • pseudo-wissen (graue hirnzellen) aber ev hilft es dir.

    variable haben doch nur eine bestimme lebenszeit, ich denke bei dir bis der loop durch ist. dann ist sie nicht mehr bekannt.

    man kann doch in php variable auch als "global" deklarieren und dann sind sie immer bekannt, stehen zur verfügung.

    und nun wird nicht gelacht über alte menschen :mrgreen:

    Das grösste Problem des Computers sitzt in der Regel ca. 40cm davor. ;-) - -

  • venus:
    nix wird gelacht, sondern brav danke gesagt für den Denkanstoß...

    Kann das denn jemand bestätigen? Überlebt eine Variable ne Loop nur, wenn sie global ist? Und wenn ja, wie kriegt man das hin?

    Und jetzt nochmal an alle: Ich liebe dieses Forum!! 1000 Dank an alle, die hier ihr Wissen preis geben und selbstlos Auskünfte und Tips geben. Es ist so eine große Hilfe!

    L.G.,
    kru:sko

  • ich 'liebe' es auch

    php - hand buch zum runterladen auch in deutsch (damit auch ich es lesen kann)

    nach auspacken auf dem pc:
    - Kapitel 11. Variablen
    -- und lesen :-)

    ([SIZE="1"]denke mal so grau waren die zellen nicht[/SIZE])

    Das grösste Problem des Computers sitzt in der Regel ca. 40cm davor. ;-) - -

  • Das Stichwort heißt "Scope". Eine Variable hat immer einen gewissen Scope, innerhalb dieser sie sichtbar ist. Wird sie direkt in PHP deklariert, ist der Scope global (aber nicht lokal!), ist die Deklaration dagegen innerhalb einer Funktion ist der Scope auf die Funktion (also lokal) begrenzt.

    Das "Problem" ist eben, dass die Loop sich sozusagen im globalen Bereich befindet, während die Sidebar über get_sidebar() eingebunden wird, also über eine Funktion (gilt auch für get_header() bzw. get_footer()).

    Ums also kurz zu machen: Ja, wenn du Variablen in der Sidebar ansprechen willst, die zuvor in der Loop deklariert und mit Inhalt gefüllt wurden, müssen diese in der Tat global sein.

    Zitat

    Warum behält die von mir definierte Variable den Wert, den sie in der ersten Loop bekommen hat nicht bis in die Sidebar?

    Lässt sich jetzt auch erklären: Du hast zwei Variablen, aber mit unterschiedlichem Scope.

    Gruß Jeriko

    Jeriko - Design, Style, Photographie

Jetzt mitmachen!

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