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

WP 5.x Contact Form 7 Variable in Textfeld?

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von itsmejay, 12. November 2018.

  1. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Schönen guten Abend Community,

    ich bau derzeit eine Webseite und habe ein neues Template in themes/meinTheme/ abgelegt. In dieser .PHP Datei befindet sich ein ein PHP-Script - dort kann der Benutzer einige Werte in einem HTML Formular wählen und über PHP wird ein möglicher "Einkaufspreis" kalkuliert.

    Nun ist es so, dass ich dem Benutzer nachdem er einen Preis kalkuliert hat die Möglichkeit geben möchte sofort eine Anfrage zu schreiben. Das soll über das Contact Form 7 passieren. Der Endpreis der über das Skript kalkuliert wurde, befindet sich in der Variable $result.

    Ich würde gerne ein Textfeld im Contact Form 7 hinzufügen, in dem das Ergebnis welches sich in der oben genannten Variable befindet automatisch reingeschrieben wird.

    Wie genau ist das möglich? Klappt das mit dem Contact Form 7 oder muss ich da ein komplett neues Kontaktformular basteln und ebenfalls in die Templatedatei.php ablegen? Bin da etwas verwirrt, weil woher soll das CF7 wissen, was in dieser Variable steht bzw. das es die Variable überhaupt gibt?

    Freue mich auf jegliche Antworten.

    Einen schönen Abend und liebe Grüße,
    JAY
     
  2. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.638
    Zustimmungen:
    1.778
    Wenn sich das Formular auf einer extra Seite befindet, kannst Du z.B. von Deiner Berechnung aus einen Redirect auf diese Seite mit dem entspr. Parameter machen und automatisch in ein Feld von CF7 einfügen.

    PS. Nutzt Du wirklich WordPress 5.0?
     
  3. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Vorab Danke für die Antwort.

    Nein, sorry. Ich benutze das 4.9.8.

    Die Variable befindet sich im Template template1.php. Nur, wie kriege ich von dort aus den redirect zum Formular hin? Hast du da eine gewisse Vorstellung?
     
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.638
    Zustimmungen:
    1.778
    Da ich nicht weiss, wie Dein template1.php aufgerufen wird und ob vor dem möglichen Redirect schon Ausgaben stattfinden, ist das schwer zu beantworten.

    Üblicherweise im WordPress Kontext via wp_redirect( .. ) oder im einfachen PHP Kontext mit header( 'Location: http://example.com/contact/?your-name=John+Smith' ); o.ä., via JavaScript wäre während der Ausgabe der Seite ein Redirect möglich, kommt eben ganz auf Deine Rahmenbedingungen an.
     
  5. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Guten Abendm,

    mein Problem ist scheinbar wohl eher, dass ich nicht weiß wohin der redirect gehen soll. Das CF7 ist ja einfach per Shortcode im Widget eingebunden. Woher soll es also die Information der Variable kriegen? CF7 muss doch irgendeine Datei haben zu der man die Variable "übergeben" kann damit diese im Formular verwendet werden können? Ich bin echt ratlos..

    Grüße
     
  6. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.638
    Zustimmungen:
    1.778
    Leider sind die Rahmenbedinungen weiterhin sehr dürftig. Dass das CF7 Formular in einem Widget steht, war bisher völlig unklar. Wie Dein Formular angezeigt wird, ist unklar. Wie Deinem Formular die Daten übergeben werden, ist unklar. Redirecte doch einfach mal auf die aktuelle Seite, nur eben mit dem passenden CF7-Parameter.
     
  7. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Danke für deine schnellen Antworten.

    Eventuell etwas ausführlicher: Ich habe in einem template1.php ein selbstgeschriebenes PHP Skript eingefügt welches es dem Besucher ermöglicht über ein Formular Checkboxen anzuklicken und somit ein Preis zu errechnen (je nach Konfiguration ein anderer Preis). Alles wird in eine Variable geschrieben, aufaddiert und diese wird dem Besucher nach abschicken des Formulars angezeigt und ausgegeben . Das ganze wird gesendet über POST- nicht über GET.

    Ich habe eine neue Menüseite im Backend erstellt und das passende Template gewählt (Template1.php). Somit wird das Formular auf der neuen Menüseite durch die Template1.php geladen und korrekt dargestellt. Über dem Skript bzw dem Formular wird der Inhalt der Menüseite wiedergegeben - dort habe ich jetzt das CF7 mal per Shortcode eingebunden.. Ich verstehe halt nicht was für ein redirect und wohin dieser gehen soll wenn sich doch alles bereits in Template1.php befindet? Ich kann mir nur denken dass das CF7 nichts mit meinem Skript in der template1.php gemeinsam hat und das Kontaktformular somit die Variable nicht auslesen kann oder kennt. Somit muss ich meine template1.php dort irgendwo im CF7 per include einbinden oder nicht?
     
  8. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.638
    Zustimmungen:
    1.778
    CF7 Getting Default Values from the Context:
    Wie gesagt, zu viele Unklarheiten. Evtl. geht es auch per JavaScript ohne Redirect.
    • In Dein HTML-Formular gibt man Daten ein, dann klickt man auf Senden?
    • Das Ziel beim Absenden ist die Seite mit Deinem Template?
    • Dann kommt der PHP-Code im Template "Template1.php" per $_POST an die Daten?
    • Dann macht der der Code was damit und Du hast am Ende die PHP-Variable $result?
    • Zu dem Zeitpunkt ist der Header von WordPress auf dieser Seite schon gesendet, also wp_head() schon aufgerufen?
    Wenn das alles zutrifft, könnte man das Ergebnis in ein kleines JavaScript verpacken und von PHP aus ausgeben. Das JavaScript sucht sich dann beim Besucher im Browser das Formular innerhalb der gleichen Seite und setzt das Ergebnis in das gewünschte Feld, sowas in der Art, ungetestet:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    itsmejay gefällt das.
  9. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Hi

    Korrekt. Trifft alles zu.

    Danke dir. Teste ich morgen mal. Vielleicht klappt's ja endlich. Bin da in dem Gebiet nicht so fit wie du. Ich kenne das nur so, dass ich in anderen php Dateien meine template1 Datei per include inkludieren kann und die vars dann mit bspw. $_POST['var_name'] ausgebe. Und auch dann schließlich ohne Probleme im Kontaktformular anzeigen lassen kann. Da CF7 mir aber nur ein Shortcode gibt den ich im Backend einfügen kann, weiss ich da bis jetzt keine Möglichkeit Felder über Variablen zu füllen. Nun ja. Ich hoffe morgen klappt es. Danke nochmal .

    Grüße
     
  10. nature225

    nature225 Well-Known Member

    Registriert seit:
    15. Dezember 2017
    Beiträge:
    463
    Zustimmungen:
    36
    Du kannst auch ein hidden Feld beim cf7 anlegen und den Wert dadrin speichern. Dann mit jquery den value auslesen
     
  11. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Guten Morgen,

    Ja, das mit dem hidden field hatte ich probiert. Kriege nur leider die Variable da nicht eingespeichert ... :)

    Grüße
     
  12. nature225

    nature225 Well-Known Member

    Registriert seit:
    15. Dezember 2017
    Beiträge:
    463
    Zustimmungen:
    36
    Wie schaut den da dein entsprechender Code aus?
     
  13. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Tatsächlich funktioniert. Er sucht das Feld "your-name" und ließt die gesamte var $result aus.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    @nature225

    Ich habe mir folgendes zusätzliches Plugin geladen: https://de.wordpress.org/plugins/contact-form-7-dynamic-text-extension/
    Anschließend im Kontaktformular über den Editor vom CF7 ein "Dynamic field" hinzugefügt mit folgendem Value: CF7_POST key=’size‘

    Normalerweise sollte es mir ja jetzt den Inhalt anzeigen, der in "Size" eingegeben wurde - oder vertu ich mich da? Er macht es aufjedenfall nicht.

    Gruß
     
  14. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.638
    Zustimmungen:
    1.778
    Für Mitleser, es ist umgekehrt, das JavaScript sucht im Browser auf der Seite das Feld "your-name" und schreibt dort die dem Script mitgegebene PHP Variable $result rein.

    Um eine PHP-Variable, die erst während der Ausgabe eines Seitentemplates ermittelt wird, serverseitig einem Feld eines CF7-Formulars "mitzugeben", muss der CF7-Shortcode erst nach dem Ermitteln der PHP-Variable ausgegeben werden und man muss zusätzlich das entspr. Attribut registrieren, dann geht sowas wie das hier, ungetestet <?php echo do_shortcode( '[contact-form-7 ... your-name="' . $result . '"]' ); ?>

    Die Voraussetzungen sind aber in diesem Fall nicht gegeben, es wurde z.B. gesagt, das CF7 Formular wäre in einem Widget o.ä., daher ist das hinfällig.
     
    itsmejay gefällt das.
  15. itsmejay

    itsmejay Member

    Registriert seit:
    12. November 2018
    Beiträge:
    8
    Zustimmungen:
    0
    Huhu,

    danke. Das Widget wird doch hier geladen wenn ich mich nicht täusche (nach dem PHP-Script im selben Template.php)

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das CF7 befindet sich in der Sidebar5, also der Shortcode. Somit müsste das CF7 welches sich in der Sidebar befindet die var $result doch kennen - oder täusche ich mich?

    Gruß
     
  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