Passez vos vars POST ou GET dans Contact Form7
Après avoir utilisé pendant quelques temps le plugin CFORMII, je me suis intéressé aux plugins permettant de générer des formulaires. Je me suis arrêté sur « Contact Form 7 » et j’ai été conquis par sa simplicité, son mode d’édition partiel permettant d’intégrer son code Html/Css et de personnaliser ses formulaires. Ce qui m’a manqué c’est de ne pouvoir passer mes variables POST contenues dans la page du formulaire (je récupérais des données sur l’utilisateur) vers les mails que me générait Contact Form 7 !
Qu’à cela ne tienne j’ai utilisé le système ingénieux de module mis en place par son auteur, et voici donc un petit module (téléchargeable ci-dessous) permettant de passer les fameuses variables GET ou POST à travers le plugin
Le module « httpvars » – A quoi ça sert ?
par exemple dans la page php qui contient votre formulaire vous avez :
[php]$_POST["myVar"][/php]
ou dans l’URL…
[php]$_GET["myVar"][/php]
… et vous voulez passez et récupérer cette variable (ou ces variables) dans le mail généré par CF7.
Installation:
Vous désarchivez le contenu du fichier « httpvars_contactform7.zip » et envoyez le fichier « httpvars.php » dans le répertoire :
« racine wordpress/wp-content/plugins/contact-form-7/modules/ »
Utilisation:
très simple, dans l’écran du plugin CF7, dans l’éditeur de code du formulaire et du mail, vous n’avez qu’à ajouter ces shortcode :
[php] /* dans votre formulaire vous insérez */
[httpvars myVar]
[/php]
[php] /* dans votre mail vous insérez */
[myVar]
[/php]
… où « myVar » est le nom de votre variable à récupérer et à passer.
Fonctionnement :
Le module génère un champ caché (de type HIDDEN) dans votre formulaire pour chaque variable que vous appelez avec le shortcode [httpvars myVar]. Quand le mail sera ensuite généré par CF7 celui-ci y ajoutera la valeur de vos variables GET|POST.
Dans votre formulaire CF7, quand vous ajoutez le shortcode [httpvars myVar] dans la partie édition du plugin, le module Httpvars recherche d’abord si un $_POST[ "myVar" ] existe, sinon il cherche dans l’URL si un $_SERVER[ 'QUERY_STRING' ] existe. Quand le module y trouve un String de GET ou une variable POST correspondant à votre variable « myVar » variable, il l’ajoute automatiquement à votre EMAIL (Avec le shortcode [myVar] ).
Téléchargement:
"HTTPVars": un module pour 'Contact Form7' (727 bytes, 205 hits)
English
How did you send the variable from page1 containing contact form 7 to page2 containing contact form7 ? Or in other words, how do you set the action=”/page2/” in the Contact form 7?
Welcome WPA,
Contact Form 7 generates himself the code of your form on 1 page.
I presumed in anyway you got your “GET” or “POST” values from a previous page/action, but what you could to do this :
PAGE1 :
a 1st classical POST form, such as :
< form name="visitorFormFieldsToFill" action="/page2/" method="POST">
< input type="hidden" name="var_to_pass_to_cf7" value= "im_the_value" />
< / form >
PAGE2 :
the page containing the CF7 form, such as :
< form action="/page2/index.php#wpcf7-f2-p3-o1" method="post" class="wpcf7-form">
< input type="hidden" name="var_to_pass_to_cf7" value="im_the_value" /> // my module will generate this line
< / form>
I hope I helped you.
Merci ! Ça fait exactement ce qui manquait
Hi, any idea how I can send a variable to the form differently to how you’ve done here? What I want is a button in a post that says ‘contact us’. That button links to the contact us page where a form field is populated with the slug or Id of the post you’ve just come from. Is this possible?
Cheers!
Hi Toby,
what I do to pass something from a post to the contact form (and which populates a form field) :
- In your (html code) post (PAGE 1), get your variables to pass. Eg. (here with POST method) :
< form name="myPostButton" action="/page2/" method="POST">
< input type="hidden" name="postID" value= "166" />
< input type="submit" name="Contact Us" />
< / form >
- In your contact us page (PAGE 2), use a JS script running in the code page after the execution of ContactForm (assuming the form field you want to populate has the element property, such “name=PostID_IwantTOget” ) :
< script type="text/javascript" >
function populate(nameElement,newvalue)
{
document.getElementsByName(nameElement)[0].value = newvalue;
}
populate(”PostID_IwantTOget”,”< ?php echo $_POST["postID"]; ?>“);
< /script >
Hope It answers !
Regards
This is very helpful! Thank you!
What I’d love to do is have the form pull a variable from the URL and populate one of the fields, which could then be edited by the user. Your example sends it directly to the email, but I’d like to give the user the option to change the value.
Example: I create a link like http://www.mysite.com/form/?city=Chicago
The form on that page would automatically put “Chicago” in the city text box.
Any suggestions?
This is just what I needed, but wouldn’t it be better to code the latter part of Toby’s request in PHP rather than JS since WP doesn’t handle JS quite well? I’m not quite well-versed in PHP though…?
Bonjour,
J’aimerais ajouter un menu déroulant dans mon formulaire qui contiendrait une liste dynamique des titres articles de mon blog.
Le but est de pouvoir ajouter une loop dans le formulaire.
vous pensez que ce plugin permettrais de réaliser ca ?
C’est à dire de pouvoir ajouter notre propre code php dans le formulaire.
Merci beaucoup,
SOUSSI
Bonjour Soussi,
Contact Form7 utilise par défaut des [shortcodes], donc introduire le PHP directement dans le formulaire ne sera pas possible. Mais ensuite il reste la possibilité de développer un plugin qui permettra de faire ce que vous souhaitez, c’est ce que j’ai fait avec mon plugin. Il est maintenant possible de passer des variables au formulaire que l’on récupère ainsi avec mes propres [shortcodes].
Peut-être quelqu’un aura développé d’autres plugin, mais ensuite il faut réussir à les trouver !
Bonne continuation.
Thanks!!
Very nice job.
Thanks! Just saved me loads of work. Very nice job!
Hi, the zip won’t open for me….? …..
Says its damaged or unknown format??
-Paul
Hi Paul,
Thanks for your message so I realized my path to the file was corrupted ! I repaired it so go on and download it now
Hope it will help you,
Robin