Variable auf ganzem Blog verfügbar machen

  • Hallo,
    ich verzweifle langsam und brauche mal eure Hilfe.

    Folgende Problemstellung:
    Ich möchte auf einer beliebigen Seite (egal wo im Blog) per Link eine Variable an den Blog übergeben.
    Link: http://www.meinedomain.de/irgendeineseite/?variabe=wert
    Im nächsten Schritt möchte ich diese Variabe irgendwo im Blog wieder auslesen, egal wie und wo der User in der Zwischenzeit im Blog unterwegs war.

    Mein Problem:
    Wenn ich die Variable mit der URL auf der Seite übergebe, in der sie nachher verarbeitet werden soll, funktioniert alles. Aber wenn ich auf einer anderen Seite im Blog bin, verliert Wordpress scheinbar den Wert meiner Variable.

    Ich habe schon versucht, die Variable im Header als global zu definieren per

    PHP
    <?php global $abc;?>


    aber das bringt scheinbar keine Veränderung.

    Kann mir jemand helfen, wie ich die Variable im ganzen Blog "mit durchschleifen" und überall verfügbar machen kann?

    Danke,
    Anni

    • 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 habe schon versucht, die Variable im Header als global zu definieren per

    PHP
    <?php global $abc;?>


    aber das bringt scheinbar keine Veränderung.


    Ergibt keinen richtigen Sinn, so wie es ausschaut. Eine Variable ist ohnehin im ganzen Script gültig (nach dem diese deklariert und definiert wurde), nur nicht innerhalb von Funktionen usw. und nur bis zum Ende des Scripts. Deshalb machst Du die zum Beispiel in einer Funktion global, damit die in der Funktion und im Script gültig ist. Beispiel:

    Würde Dir aber alles nichts bringen, da eine Variable nur bis zum Ende des Scripts gültig ist. Wenn das Script nach einer bestimmten Anzahl von Millisekunden abgearbeitet ist, wird der Speicher wieder entrümpelt und bei jedem erneuten Aufruf des Scripts muss auch die Variable wieder neu mit einem Wert belegt werden. POST und GET würden Dir auch nichts bringen, wenn Du diese nicht übergibst. Neben Post und GET gibt es noch andere Superglobals, die eventuell in Betracht kommen. Dann gibt es noch define, wenn es ein vorgegebener Wert ist und anderes.

    Doch Dein Klick erfolgt clientseitig, somit solltest Du eventuell auch clientseitige Möglichkeiten in Betracht ziehen, da könntest Du in Cookies oder DOM-Storage speichern. Wenn es clientseitig nicht sein soll, dann speichere in DB oder wie auch immer.

    Einmal editiert, zuletzt von Melewo (23. Oktober 2013 um 21:52)

  • Doch Dein Klick erfolgt clientseitig, somit solltest Du eventuell auch clientseitige Möglichkeiten in Betracht ziehen, da könntest Du in Cookies oder DOM-Storage speichern. Wenn es clientseitig nicht sein soll, dann speichere in DB oder wie auch immer.

    Hallo Melewo,
    danke für deine so ausführliche und schnelle Antwort.
    Cookies ... klar! Cookies :-)
    Ich war so auf ne Webseiten-seitige Lösung fixiert, dass ich auf Cookies gar nicht gekommen bin. *schäm*
    Cookies sind eine gute Idee und für mein Vorhaben. Das passt. :-)
    Danke für den Wink mit dem Zaunpfahl. ;-)

    Dann werde ich mal rum googlen, wie man Cookies setzt und ausliest.
    Bin gespannt, ob ich das hin bekomme. Wenn nicht, würde ich mich noch mal melden.

    Liebe Grüße,
    Anni

  • Huhu Melewo,
    ich noch mal. ;-)

    Cookie setzen und Cookie auslesen und Wert per CF7 verschicken funktioniert alles.
    Aber ein Problem habe ich da, wozu ich bei google aber nix finde.

    WP setzt mir jetzt für jede Seite und jeden Blogbeitrag einen neuen Cookie.
    http://www.meineDomain.de/Seite1/?info=test
    http://www.meineDomain.de/Seite2/
    http://www.meineDomain.de/Artikel1/
    etc...

    Wie mache ich das, dass er nur 1 Cookie für die ganze Domain setzt und nicht für jede Seite (er sieht es als je ein Verzeichnis, weil /Seite/ ) ?

    Mein Cookie-Code in funktion.php:

    PHP
    add_action('init', function() {
        $wertauslink = $_GET["info"];
        if ($wertauslink == "") {$wertauslink = "testwert";}
        if (!isset($_COOKIE['info'])) {setcookie('info', $wertauslink, time()+1209600);}
    });

    Hast du ne Idee?

  • Hallo,
    eigentlich brauchst du gar keine Cookies ... was ist, wenn jemand Cookies deaktiviert hat? Ich habe sie z.B. immer deaktiviert, bis dahin, wo ich mich einloggen muss. Dann geht auch gar nichts mit Variable weiter geben.

    Mit einer Include könnte es funtionieren, ohne Cookies, ohne JavaScript, ohne dgl.

    Gruß
    Gsi

  • Vielleicht solltest Du erstmal definieren, was Du erreichen willst? Wofür der ganze Nonsens?

    1. Die Variable ist sicherlich als private anzusehen, deswegen hat sie nix in der URL verloren.
    2. Man kann recht einfach die benötigen Variablen in das Query-Array von WP hinzufügen (-> $qvars[] = "wasdenn")
    3. Richtig macht man das, in dem man auf das Vorhandensein des Key prüft und diesen dann füllt. Sprich: wenn "wasdenn" existiert, -> $querydata["wasdenn"] = $wp->query_vars["wasdenn"].
    4. Um Dich auf die richtige Spur zu führen: parse_request (action) und query_vars (filter) sind lesenswert! ;)

    Stackoverflow hilft Dir da mit Vorgekautem etwas weiter.

    Cookies sind shice!

    PS: Die Cookie-Domain setzt man in der wp-config.php ( define( 'COOKIE_DOMAIN', 'foo.de' ); )

  • Ein Cookie setzt sich einfach, in dem ein kleines Fenster aufgerufen wird.

    Der wäre dann 30 Tage für die ganze Domain gültig.

Jetzt mitmachen!

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