WIE Cookie auslesen mit PlugIn "Contact Form 7 - Dynamic Text Extension"

  • In der funktion.php setze ich (sofern noch nicht vorhanden) einen Cookie.

    Jetzt würde ich diesen Cookie gerne auslesen und den Wert in einem CF7 Dynamic Text Feld anzuzeigen, um diesen Wert dann auch beim Absenden des Formular's per Mail verschicken zu können.

    Grundidee ist folgende:

    1. User kommt von irgendwo per Link http://www.meinedomain.de/?ref=wert


    2. Der Wert der Variable "ref" wird im Cookie gespeichert, sofern nicht vorher ein anderer Wert per Cookie hinterlegt wurde.

    3. Der User surft etwas über die Seite (deswegen der Cookie) und füllt am Ende ein Formular aus und schickt seine Daten ab. Hierbei soll dann auch der Wert der Variabe "ref" an Contact Form 7 übergeben werden.


    Wer hat eine Idee, wie ich das realisieren könnte?
    [dynamictext ref "CF7_GET key='ref'"] funktioniert leider nur, wenn die Seite, über die der User rein kommt zufällig die Formularseite ist, da der Befehlt den Wert dann aus der URL nimmt und nicht aus dem Cookie.

    Googlen hat mich leider auch nicht weiter gebracht. :(
    HIIIILFEEE...

    LG,
    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

  • Cookies sind doof...

    Wenn Du die aktuelle Seite übermitteln willst, hat CF7 passende Tags parat:

    Wenn Du den Referrer haben willst, mach des mal so:

    1. Textfeld im Formular hinzufügen:

    Code
    [text referrer-seite class:referrer-seite]


    2. Per CSS die Klasse auf display:none stellen (oder halt als hidden field).
    3. Folgende Funktion in der functions.php hinterlegen:

    Code
    function myRefPage( $cf7_tag )
    {
            if ( $cf7_tag['name'] == 'referrer-seite' ) {
                    $cf7_tag['values'][] = $_SERVER['HTTP_REFERER'];
            }
            return $cf7_tag;
    }
    add_filter( 'wpcf7_form_tag', 'myRefPage' );


    4. Das Feld in Mailbody eintragen.

    Cookies sind doof...

  • Hallo formateins,

    danke für deine Antwort.

    Also ich brauche den Wert, der durch die Variable "ref" übergeben wird.
    Das Problem ist, dass der User evtl rein kommt über
    http://www.meineDomain,de/Seite1/?ref=12345
    und verarbeitet wird die Variable erst auf
    http://www.meineDomain.de/Seite5/
    Auf dem Weg von Seite1 zu Seite5 fällt aber i.d.R. beim ersten Klick das ?ref=12345 weg.
    Deswegen der Umweg über die Cookies.
    Nur ich kriege den Cookie nicht so ausgelesen, dass ich den Wert an CF7 übergeben kann. :(

  • Ich ignoriere mal meine Verständnisfragen... :confused:

    Sofern das Cookie gesetzt ist, kannst Du es Problemlos mit

    Code
    $meinCookie = $_COOKIE['my_cookie'];

    auslesen und im Punkt 4 oben einbinden.

  • Mal angenommen, ich wollte nur den Wert des Cookies (also in deinem Beispiel dei Variable $meinCookie) auslesen und in die eMail von CF7 übertragen, brauche ich dann auch die funktion aus Punkt 3?
    Wie heißt denn dann das [irgendwas], welches in den Mailbody kommt?

    Mein Bauch sagt, das klingt alles irgendwie gut, aber mein Kopf blickt noch nicht ganz durch.
    Sorry, bin noch Neuling :-(

    Einmal editiert, zuletzt von WPNeuling123 (24. Oktober 2013 um 02:53)

  • Die Funktion macht genau das -> Cookie value auslesen und ins Feld des Formulars setzen. Steht im Cookie nix drin, bleibts logischerweise leer. Der angegebene Feldname muss mit dem Feldnamen im Formular selbst übereinstimmen.

    Siehe 1. -> das Textfeld heisst "referrer-seite" -> [referrer-seite] im Mailbody.

    ;)

  • Ah, ok, so langsam kapiere ich's. :-)
    Wo lese ich den Cookie-Wert am besten aus? Im Post bzw in ner Seite läuft ja kein PHP. Baue ich das dann in den Header ein oder kann das direkt mit in die funktion.php?
    Wo setze ich die Cookie-Variable denn im funktion-Code ein? An Stelle von 'name' oder wo muss das dann hin?

  • Bitte meine Beiträge nochmal lesen.

    WordPress basiert komplett auf PHP.

    Die Funktion wird in der functions.php durch den add_filter-Hook _immer_ ausgeführt. Post/Page/Whatever. Du kannst auch bspw. mit einer if-Abfrage prüfen, ob die Daten gesetzt sind (if(!empty($foo))).

    Idealerweise ans Ende der functions.php.

    Learning by doing... ;)

  • Ich habe jetzt folgendes in die funktion.php eingegeben:

    PHP
    function myRefPage( $cf7_tag )
    {
            if ( $cf7_tag['name'] == 'referrer-seite' ) {
                    $cf7_tag['values'][] = $_COOKIE['abc_cookie'];
            }
            return $cf7_tag;
    }
    add_filter( 'wpcf7_form_tag', 'myRefPage' );

    und ins Mailfeld:
    [referrer-seite]

    aber in der Mail steht an der Stelle, wo der Variablenwert stehen soll, steht nur:
    [referrer-seite]

    :-(

Jetzt mitmachen!

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