Récupérer une variable dans Contact Form 7

contact form 7

Pour plusieurs raisons, vous aurez besoin de récupérer des variables et de les insérer dans vos formulaires de contact sur Contact Form 7.

Dans l’exemple ci-dessous, je vais vous montrer comment récupérer la page d’origine du click sur le bouton contact provenant d’un autre site.

Envoyer la valeur dans votre formulaire

Pour commencer il faut envoyer un POST via votre lien sur votre bouton.
Admettons une page test.htm avec un bouton contact.
Il faut envoyer via le href du lien, les données que vous souhaitez récupérer en GET sur votre formulaire.

<html>
	<head>
	<tilte>Test</title>
	</head>
	<body>
	<p>Ma page test</p>
	<a href="https://url_de_votre_site/page_contact?from=accueil">Nous contacter</a>
	</body>
</html>

Récupérer la valeur dans votre formulaire

Au click sur le lien, l’information ?from=accueil est envoyée et conservée par votre navigateur.
Pour récupérer et afficher cette information sur votre formulaire, vous aurez besoin de créer une fonction dans votre fichier functions.php de votre thème, car vous ne pouvez pas insérer directement du code php dans votre formulaire.

/* Add source to Contact Form */
/* ---------------------------------- */
function provenance() {
	// on déclare une source par défaut
	$defautprovenance = "Blog";
	// on récupérer la valeur de from du POST ?from=accueil
    $var=$_GET['from'];
	// Si le POST est vide alors on affiche la valeur par défaut
	if (empty($_GET)) {
    	return $defautprovenance;
	}
	// Sinon on affiche la valeur récupérée
	else {return $var;}
}
// on créée le shortcode pour CF7
add_shortcode('provenance', 'provenance');

Afficher la valeur dans votre formulaire

Ci-dessus, nous avons créé un shortcode [provenance] que nous pouvons appeler à différent endroit.

Quelques exemples :

<!-- Récupérer la valeur dans un input et le mettre en caché : -->
<input type="hidden" name="provenance" value="[provenance]"></input>
<!-- Afficher la valeur dans un bloc text -->
<textarea name="your-message" cols="40" rows="10">[provenance]</textarea>

Enfin, vous pouvez récupérer cette valeur et l’envoyer dans votre email

De : [your-name] <[your-email]>
Objet : [your-subject]
Source : [provenance]
Corps du message :
[your-message]