Extension WordPress
Cabrio
Contact
Un formulaire de contact en blocs : des champs placés et nommés dans l’éditeur, un message envoyé par WordPress à l’adresse que le bloc indique, une protection sans captcha.

Version
1.4.5
mise à jour le 3 novembre 2026
Extension WordPress
WordPress
6.5 +

PHP
7.4 +
testée jusqu’à WordPress 7.1
Mises à jour
Signées
dans le tableau de bord
Langues
FR · EN
écrans et présentation
Licence
GPL
à adapter librement
Présentation
Ce que fait Cabrio Contact
Le site d’une petite entreprise a besoin d’un ou deux formulaires qui envoient un courriel. Cette extension ne fait que cela, avec deux blocs :
- Formulaire de contact : où partent les messages, l’objet du courriel, le texte du bouton et la phrase affichée une fois le message envoyé ;
- Champ de formulaire, placé à l’intérieur : une étiquette, un type (texte, adresse de courriel, numéro de téléphone, texte long, liste de choix), s’il est obligatoire, et ce que le navigateur peut remplir pour le visiteur.
Un nouveau formulaire commence avec trois champs : nom, courriel, message. Chaque champ obligatoire porte une étoile, et une phrase en tête du formulaire en donne le sens.
Le message est en texte simple, une ligne par champ, envoyé par wp_mail(). Quand le formulaire demande une adresse de courriel, les réponses vont au visiteur. L’expéditeur est laissé à WordPress, ou à l’extension de courrier du site (WP Mail SMTP par exemple), pour que le message parte du nom de domaine du site.
La valeur d’un champ peut entrer dans l’objet, avec le nom du champ entre accolades : Demande : {probleme}. Ce nom est celui donné dans les réglages du champ, ou à défaut tiré de son étiquette.
Une liste de choix s’écrit dans les réglages du champ, un choix par ligne. Une ligne « clé | Libellé » donne au choix une clé courte : un lien vers la page avec ?nom=clé, le nom du champ et la clé, arrive avec ce choix déjà sélectionné (/contact/?demande=site). Le courriel et l’objet montrent le libellé, jamais la clé. Seul un choix de la liste enregistrée est accepté : une valeur inventée par le navigateur est refusée comme un champ obligatoire vide.
Dans le détail
Ce qu’un formulaire envoie est relu dans la page
Quand un formulaire est envoyé, l’extension relit la page enregistrée, y retrouve le formulaire par son identifiant, et y prend la liste des champs, ceux qui sont obligatoires et l’adresse où va le message. Rien de cela ne vient de la requête : un visiteur ne peut ni ajouter un champ, ni changer le destinataire, ni se servir du formulaire comme d’un relais de courrier.
Conséquence : un formulaire doit être dans le contenu de la page qui l’affiche. Placé dans un modèle ou une composition synchronisée, il s’affiche, mais il n’est pas retrouvé à l’envoi, et il le dit.
Pas de captcha, exprès
Un captcha chargé depuis un tiers est bloqué par tout bandeau de cookies honnête, et le visiteur se retrouve devant un formulaire qui refuse de partir. Le formulaire est gardé autrement, par trois choses dont aucune ne suffit seule :
- un champ piège, hors de vue, que les robots remplissent parce qu’ils remplissent tout ;
- un délai minimum : on ne remplit pas un formulaire en quatre secondes ; le champ qui porte l’heure d’ouverture est refusé s’il manque ;
- un plafond par adresse : trois messages par heure, dix par jour, par formulaire.
Le piège et le délai mentent, le plafond dit la vérité. Seul un robot remplit le piège ou envoie en moins de quatre secondes : on lui dit que son message est parti, et il n’apprend pas quelle garde l’a arrêté. Le plafond peut arrêter une vraie personne qui écrit une quatrième fois dans l’heure, et qui ne doit pas croire son message parti alors qu’il ne l’est pas. Pour la même raison, une page ouverte depuis plus d’un jour, qui peut être la page d’une vraie personne servie par un cache, est invitée à se recharger.
La garde est celle de Cabrio Connexion, reprise telle quelle.
Ce que le serveur de courrier refuserait
Deux refus de plus, ceux du formulaire de contact de CabMiniWorld, nés d’un message que le serveur de courrier lui-même a refusé comme pourriel le 23 septembre 2026 (« 554 5.7.1 ») : chaque refus de ce genre nuit à la réputation de l’adresse d’envoi.
- Plus de deux adresses web dans un message, comptées sur tous ses champs de texte : un client qui écrit en met une, celui qui en met cinq n’écrit pas pour un ordinateur. Les domaines nus comptent aussi (.fr, .com, .ru…).
- Un champ plus long que permis (5 000 caractères pour un texte long).
Ce sont deux erreurs de champ, dites à la personne, qui garde son texte pour le corriger : contrairement au piège, il n’y a rien à cacher à une vraie personne. Le plafond de liens est links dans cab_contact_limits.
Les pages servies par un cache
La garde refuse une page ouverte depuis plus d’un jour, pour qu’une vieille page ne puisse pas être rejouée. Un formulaire de contact vit souvent sur une page d’accueil qu’un cache garde des jours, avec l’heure à laquelle elle a été construite. Un petit script demande donc l’heure au site au chargement de la page (/wp-json/cab-contact/v1/instant, une adresse que l’extension demande aux caches, LiteSpeed compris, de ne pas garder) et la pose dans le formulaire. Sans le script, l’heure imprimée reste, et le formulaire marche tant que la page en cache a moins d’un jour.
Pour la même raison, le jeton de sécurité n’est vérifié que pour un membre connecté : dans une page en cache, le jeton d’un visiteur est périmé au bout de douze heures, et il ne protégerait rien de toute façon, puisque tout le monde peut écrire.
Le thème l’habille
La feuille de style de l’extension ne fait que disposer les champs et cacher le piège, dans :where(), pour que les règles du thème l’emportent toujours. Chaque étiquette enveloppe son champ, comme celles de Contact Form 7, si bien qu’un thème qui habillait ces formulaires (form label, form input) habille ceux-ci de la même façon. Le bouton porte la classe de bouton du thème, wp-element-button.
Classes : cab-contact-form sur le formulaire, puis cab-contact-form__field, __label, __required, __legend, __error, __submit, __notice (avec --done ou --error) et __trap.
Pour les développeurs
cab_contact_limitsfiltre les plafonds, le délai minimum et le nombre maximal de liens d’un formulaire.cab_contact_mailfiltre les arguments dewp_mail()avant l’envoi.cab_contact_sentest déclenché une fois un message parti, avec l’identifiant du formulaire, les valeurs et la publication.
Les mises à jour
Les mises à jour viennent de Cabrio Dépôt, sur cabrio-informatique.com, dans le tableau de bord, avec le bouton habituel et le changelog dans « Voir les détails ». La clé de licence du site se saisit une fois, dans Réglages → Licence Cabrio. Sans clé, ou quand la licence a pris fin, l’extension continue de marcher ; seules les mises à jour s’arrêtent. Chaque mise à jour est vérifiée par la signature de son zip avant d’être installée.

Mises à jour
Signées
Mise à jour depuis le tableau de bord
Installation
En place
en quelques gestes
- Téléversez le dossier
cab-contactdans/wp-content/plugins/, ou le zip par Extensions, Ajouter, Téléverser. - Activez-la.
- Dans une page, ajoutez un bloc Formulaire de contact, indiquez où partent les messages, et disposez ses champs.
Questions
Vos questions
Garde-t-elle une copie des messages ?
Non. Rien n’est gardé que deux compteurs par adresse de visiteur, qui expirent après une heure et un jour. Si le courrier du site ne part pas, le visiteur apprend que son message n’a pas pu être envoyé.
Peut-elle envoyer des pièces jointes ?
Non. C’est un autre genre de formulaire, avec d’autres risques.
Avis
Ce qu’en disent ses utilisateurs
Pas encore d’avis sur Cabrio Contact : le vôtre peut être le premier.
Donner votre avis sur Cabrio Contact
Votre avis paraît après relecture. Votre adresse électronique sert seulement à vous répondre si besoin : elle n’est jamais publiée. Comment nous traitons les avis
Historique
Son histoire
Cabrio Contact 1.4.5
L’historique en français, ici même : Cabrio Dépôt 0.10.0 le montre sur la page de l’extension et dans la fenêtre « Voir les détails » d’un site en français. Rien d’autre ne change.
Version 1.4.4
Le module de mise à jour 2.0.2 (2 novembre 2026), première version de Cabrio Contact faite pour arriver sur les sites par leur tableau de bord plutôt qu’à la main.
- Réglages > Licence Cabrio nomme chaque produit dans la langue du site (Cabrio Carrousel, Cabrio Options utiles), comme l’écran Extensions.
- Plusieurs éditeurs peuvent servir leurs produits sur le même site, chacun avec sa clé de licence ; la clé de Cabrio reste où elle était.
- Sur cabrio-informatique.com, dont le Dépôt sert cette extension, une mise à jour n’échoue plus par « Service Unavailable » pendant que WordPress met le site en maintenance : le paquet est lu dans le Dépôt sans passer par HTTP, et sa signature est vérifiée comme toujours.
- Page de l’extension : https://cabrio-informatique.com/extensions-wordpress/cabrio-contact/.
Rien ne change dans les formulaires.
Version 1.4.3
Le module de mise à jour 1.0.3 (2 novembre 2026) : il fait confiance à une nouvelle clé de signature, qui remplace une clé dont la partie secrète avait été exposée avant qu’aucun site en production ne porte le module. Rien d’autre ne change.
Version 1.4.2
Le module de mise à jour 1.0.2 (2 novembre 2026) : dans Réglages > Licence Cabrio, une licence terminée se lit « Terminée, depuis le <date> », et « copie de développement » ne s’affiche que pour une licence active. Rien d’autre ne change.
Version 1.4.1
Le module de mise à jour 1.0.1 (29 octobre 2026) : « Testé jusqu’à 7.1 » compte désormais comme compatible avec WordPress 7.1.x dans la fenêtre « Voir les détails », qui disait « non testé avec votre version » sous 7.1.3. Rien d’autre ne change.
Versions précédentes
1.4.0
Les mises à jour par Cabrio Dépôt (29 octobre 2026). L’extension embarque le module commun aux produits Cabrio (inc/cab-depot-client/) et l’en-tête « Update URI: https://cabrio-informatique.com/cab-depot/cab-contact » : ses mises à jour viennent de cabrio-informatique.com, dans le tableau de bord, avec le bouton habituel et l’historique sous « Voir les détails ». La clé de licence du site se saisit une fois, dans Réglages > Licence Cabrio. Sans clé, ou quand la licence est terminée, l’extension continue de marcher ; une ligne sous elle, dans l’écran Extensions, dit pourquoi elle ne reçoit pas de mises à jour. Chaque mise à jour est vérifiée d’après la signature de son zip avant que WordPress ne le décompresse. Rien d’autre ne change.
1.3.1
La présentation, pour Cabrio Dépôt (28 octobre 2026) ; aucun changement du code. Un readme français, readme-fr_FR.txt, à côté de celui-ci : le Dépôt le montre dans la fenêtre « Voir les détails » des sites en français et sur les pages de présentation. L’icône et la bannière vivent dans le dossier .wordpress-org du dépôt, hors du zip. Ce readme dit désormais ce que la 1.3.0 a ajouté : l’étoile d’un champ obligatoire, et ses deux classes.
1.3.0
Les champs obligatoires se voient (demandé par Cyrille le 28 octobre 2026, sur la page Contact de CabMiniWorld, où rien ne les distinguait). Une étoile suit le libellé de chaque champ obligatoire, dans l’éditeur comme sur le site, et une ligne avant les champs, « Les champs marqués d’un * sont obligatoires. », dit ce qu’elle veut dire ; seulement quand le formulaire en contient un. L’étoile est cachée aux lecteurs d’écran, qui entendent déjà « obligatoire » sur le champ. L’extension ne lui donne aucune couleur : classe cab-contact-form__required, que le thème habille.
1.2.0
Deux gardes du formulaire de contact de CabMiniWorld, pour que l’extension puisse l’y remplacer (demandé par Cyrille le 28 octobre 2026). Un message qui porte plus de deux adresses web est refusé avant l’envoi, avec « Trop d’adresses web : le serveur de courrier refuserait le message… », la marque la plus courante du spam et la raison pour laquelle le serveur de courrier avait refusé un message le 23 septembre (cab_contact_count_links(), le motif du thème, un lien comptant pour un). Et un champ plus long que permis est désormais refusé avec « Ce texte est trop long : 5 000 caractères au plus » au lieu d’être coupé sans un mot : la fin d’un long message se perdait sans bruit. Dans les deux cas, le texte est gardé pour que la personne le corrige. Le plafond de liens est links dans cab_contact_limits (2).
Trouvé en route, et corrigé dans le thème cab-miniworld (3.70.2) : son propre formulaire de contact nommait son jeton comme celui de cette extension, et prenait un message refusé par Cabrio Contact pour le sien.
Vérifié sur le site local de CabMiniWorld : trois adresses refusées, un long message refusé avec son texte gardé en entier, un message avec une adresse envoyé et reçu dans Mailpit ; la page Contact, passée à l’extension, envoie avec l’objet et les remerciements du thème.
1.1.0
Une nouvelle sorte de champ, la liste de choix, demandée par Cyrille le 20 octobre 2026 pour qu’un seul formulaire de contact dise de quoi parle un message (un dépannage, un devis de site, un cours…). Ses choix s’écrivent un par ligne dans les réglages du champ, avec une clé courte facultative (« site | Devis de site internet ») ; un lien avec ?nom=clé présélectionne le choix, sur le serveur et, pour une page servie par un cache qui n’a pas vu l’adresse, dans view.js, qui ne remplace jamais ce que le visiteur a déjà choisi. Comme tout autre champ, la liste est relue dans la page enregistrée à l’envoi du formulaire : seule l’une de ses clés est acceptée, et le courriel et son objet montrent le libellé du choix. Une liste écrite sans aucun choix redevient un champ texte.
Vérifié en local : un lien présélectionne son choix, une clé inconnue est ignorée, une valeur inventée et une liste obligatoire vide sont refusées, un message valable arrive dans la boîte avec le libellé dans son objet et sa première ligne.
1.0.1
Un message envoyé trop vite, ou sans son heure d’ouverture, reçoit désormais la réponse « envoyé », comme un piège rempli, comme Cyrille l’a décidé le 24 septembre 2026 pour les formulaires maison : seul un robot fait cela, et il ne doit pas apprendre quelle garde a parlé. Une page ouverte depuis plus d’un jour reçoit toujours la vérité, avec une phrase à elle : ce peut être la page d’une vraie personne, servie par un cache.
Vérifié en local : trop vite et sans heure, réponse « envoyé » et rien ne part ; une page vieille de deux jours, priée de se recharger ; une demande valable arrive toujours dans la boîte.
1.0.0
Première version, écrite pour remplacer Contact Form 7 sur cabrio-informatique.com : la demande d’intervention de l’accueil et la page Contact.
- Deux blocs, un formulaire et ses champs, dessinés en PHP et montrés dans l’éditeur avec les mêmes classes que sur le site.
- Ce qu’un formulaire envoie, et à qui, est lu dans la page enregistrée.
- La garde de Cabrio Connexion : piège, délai minimum, plafonds par heure et par jour.
- Une heure d’ouverture fraîche, demandée au chargement de la page, pour les pages servies par un cache.
- Traduction française.
Vérifié en local : une demande et un message de contact valables arrivent dans la boîte, avec réponse au visiteur ; un message envoyé trop vite est refusé ; un piège rempli reçoit la réponse « envoyé » et rien ne part ; les champs manquants ou faux sont signalés, avec ce qui avait été tapé gardé ; le quatrième message de l’heure est refusé. Dans l’éditeur, les deux pages sont valides et s’ouvrent sans changement.