Contact Form 7 n’est peut-être pas le meilleur plugin WordPress pour la gestion de formulaires, mais il a tout de même deux avantages indéniables pour le client final : il est gratuit et simple d’utilisation.

Néanmoins, il est possible que vous souhaitiez, de temps à autre, faire autre chose qu’envoyer un email après la validation d’un formulaire. Par exemple, pour un dossier en cours, j’ai eu besoin de récupérer les données envoyées pour remplir un contenu. Pour les intercepter, j’ai eu recours à un filtre présent dans le plugin un peu avant l’envoi de l’email :

add_filter( 'wpcf7_mail_components','ma_function',10,2);

Ce filtre me permet de récupérer en paramètres de la fonction deux variables essentielles pour aller plus loin :

  • $components : ce premier élément me renseigne sur le contenu de l’email. Il s’agit d’un tableau comprenant les données suivantes : ‘subject’, ‘sender’, ‘body’, ‘recipient’, ‘additional_headers’ et ‘attachments’. Il va me permettre d’interagir, voire de modifier dynamiquement l’email envoyé par Contact Form 7.
  • $wpcf7 : ce second paramètre contient toutes les informations relatives à la configuration du formulaire, ce qui sera très utile pour savoir si je suis bien en train d’interagir avec le bon élément.
function ma_fonction($components,$wpcf7){
	if($wpcf7->id == 2){ 
		$datas = $wpcf7->posted_data;
		$uploads = $wpcf7->uploaded_files;
		(...)
		$message = "Ce message précède le contenu normal de l'email";
		$components['body'] = $message.$components['body'];
		return  $components;		
	}
}

Avec ces quelques lignes de code, j’ai donc pu :

  • vérifier que le formulaire était le bon grâce à son identifiant
  • récupérer les données et fichiers envoyés par l’utilisateur
  • modifier le contenu de l’email envoyé

Désormais, grâce à cette astuce, vous pourrez utiliser Contact Form 7 pour des utilisations bien plus larges que son emploi d’origine.

2 thoughts on “Contact Form 7 : intercepter les données

  1. Salut,

    Je cherche un moyen de récupérer une variable statique d’une page html wordpress dans un formulaire wordpress.

    Je ferais un genre de $var= »mavar » (il faudrait un plugin pour pouvoir écrire en php sur l’éditeur de texte wordpress..!!??)

    et de l’autre côté, sur le formulaire (s’il offre cette possibilité) récupérer cette variable $var.

    ça te parle, tu aurais un idée.

    irobux

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Bonjour, comment puis-je vous aider ?