CapJS Integration by Mak2com
Wordpress plugin for CapJS captcha
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/mak2com-github/m2c_wpcapjs/archive/refs/heads/main.zip🧩 CapJS Integration Plugin for WordPress
CapJS Integration est un plugin WordPress développé par Mak2com pour intégrer le captcha open-source CapJS sur les sites WordPress sans dépendance à Google reCAPTCHA.
🚀 Fonctionnalités
- Intégration native du widget CapJS sur les formulaires WordPress
- Support Ninja Forms avec champ personnalisé glisser-déposer
- Support Contact Form 7 avec validation automatique
- Support WooCommerce pour protéger les formulaires d'inscription, connexion, checkout et avis produits
- Page d'administration pour configurer les clés CapJS (
site keyetsecret key) - Validation serveur du
cap-tokenvia votre instance CapJS self-hosted - Code léger, sans tracking, 100 % open-source
- Compatible avec les formulaires AJAX
⚙️ Installation
1️⃣ Pré-requis
- WordPress ≥ 6.0
- PHP ≥ 8.0
- Une instance CapJS accessible (ex.
https://capjs.domaine.com) - Votre instance CapJS doit être fonctionnelle avant l'installation du plugin
2️⃣ Installation du plugin
-
Téléversez ou clonez le plugin dans le dossier :
/wp-content/plugins/m2c-capjs -
Activez le plugin depuis l'interface d'administration WordPress
-
Allez dans Réglages → CapJS Integration
-
Configurez vos paramètres :
- URL du serveur CapJS : L'URL de votre instance CapJS (ex.
https://capjs.domaine.com) - Site Key : Votre clé publique CapJS
- Secret Key : Votre clé secrète CapJS
- URL du serveur CapJS : L'URL de votre instance CapJS (ex.
🎯 Utilisation
Avec Ninja Forms
Ajouter le captcha à un formulaire
- Ouvrez le constructeur de formulaire Ninja Forms
- Dans la liste des champs, cherchez "CapJS Captcha" (section "Divers")
- Glissez-déposez le champ où vous voulez qu'il apparaisse dans votre formulaire
- Configurez les options du champ :
- Label : Texte affiché au-dessus du captcha
- Thème : Clair ou Sombre
- Enregistrez le formulaire
Fonctionnement
- Le captcha s'affiche automatiquement à l'endroit où vous avez placé le champ
- La soumission du formulaire est bloquée tant que l'utilisateur n'a pas validé le captcha
- Le token est automatiquement envoyé avec les données du formulaire
- La validation côté serveur se fait automatiquement
Avec Contact Form 7
Ajouter le captcha à un formulaire
- Ouvrez le formulaire Contact Form 7 que vous souhaitez protéger
- Dans l'éditeur de formulaire, ajoutez le shortcode :
[capjs] - Placez-le où vous voulez qu'il apparaisse (généralement avant le bouton de soumission)
- Enregistrez le formulaire
Options du shortcode
Le shortcode [capjs] supporte une option de thème :
[capjs]- Thème clair (par défaut)[capjs dark]- Thème sombre
Fonctionnement
- Le captcha s'affiche automatiquement à l'emplacement du shortcode
- La soumission du formulaire est bloquée tant que l'utilisateur n'a pas validé le captcha
- Le token est automatiquement envoyé avec les données du formulaire
- La validation côté serveur se fait automatiquement
- En cas d'échec, un message d'erreur s'affiche : "La validation du captcha a échoué. Veuillez réessayer."
Avec WooCommerce
Formulaires protégés
Lorsque WooCommerce est installé et activé, CapJS peut protéger les formulaires suivants :
- Formulaire d'inscription (
/my-account/register) - Activé par défaut - Formulaire de connexion (
/my-account/login) - Activé par défaut - Formulaire de paiement/checkout (
/checkout) - Désactivé par défaut - Formulaire d'avis produit (sur les pages produits) - Désactivé par défaut
Configuration WooCommerce
Depuis la version 1.4.0, vous pouvez activer/désactiver sélectivement la protection sur chaque formulaire WooCommerce.
Allez dans Réglages → CapJS et configurez la section "Protection WooCommerce" :
- ✅ Formulaire de connexion : Recommandé pour la sécurité des comptes utilisateurs
- ✅ Formulaire d'inscription : Recommandé pour prévenir le spam et les inscriptions frauduleuses
- ⚠️ Formulaire de paiement (checkout) : Désactivé par défaut pour éviter les problèmes de compatibilité avec les checkouts multi-étapes
- ℹ️ Avis produits : Protection optionnelle contre les faux avis
⚠️ Compatibilité checkout multi-étapes
Si vous utilisez un plugin de checkout multi-étapes (ex: WooCommerce Multistep Checkout, Checkout Manager, etc.), il est fortement recommandé de désactiver la protection sur le checkout.
Pourquoi ? Le widget CapJS peut ne pas persister entre les différentes étapes du checkout, ce qui empêche la validation finale de la commande.
Solution :
- Allez dans Réglages → CapJS
- Dans la section Protection WooCommerce, décochez "Formulaire de paiement (checkout)"
- Enregistrez les modifications
Les formulaires de connexion et d'inscription resteront protégés, assurant la sécurité sans impacter le tunnel de paiement
Fonctionnement
- Le captcha s'affiche automatiquement avant le bouton de soumission
- La soumission du formulaire est bloquée tant que l'utilisateur n'a pas validé le captcha
- Le token est automatiquement envoyé avec les données du formulaire
- La validation côté serveur se fait automatiquement
- Compatible avec les mises à jour AJAX de WooCommerce (checkout dynamique)
Personnalisation
Pour personnaliser l'apparence du widget dans WooCommerce, ajoutez du CSS ciblant .capjs-woocommerce :
.capjs-woocommerce cap-widget {
margin: 20px 0;
padding: 15px;
background: #f9f9f9;
border: 1px solid #ddd;
border-radius: 4px;
}
Test et validation
Pour tester l'intégration WooCommerce :
-
Formulaire d'inscription :
- Aller sur
/my-account/(déconnecté) - Vérifier que le widget s'affiche dans le formulaire d'inscription
- Tenter de s'inscrire sans valider → Doit échouer avec message d'erreur
- Valider le captcha et s'inscrire → Doit réussir
- Aller sur
-
Formulaire de connexion :
- Se déconnecter et aller sur
/my-account/ - Vérifier que le widget s'affiche
- Tester la validation
- Se déconnecter et aller sur
-
Formulaire de checkout :
- Ajouter un produit au panier et aller sur
/checkout/ - Vérifier que le widget s'affiche
- Tester avec et sans validation du captcha
- Vérifier la compatibilité avec les mises à jour AJAX
- Ajouter un produit au panier et aller sur
-
Formulaire d'avis produit :
- Se connecter et aller sur une page produit
- Vérifier que le widget s'affiche dans le formulaire d'avis
- Tester la validation
🔒 Validation du captcha
Côté client (JavaScript)
Ninja Forms :
- Le champ écoute l'événement
before:submit - Si le captcha n'est pas validé, la soumission est annulée
- Un message d'erreur s'affiche : "Veuillez valider le captcha avant de soumettre le formulaire."
Contact Form 7 :
- Le captcha écoute l'événement
wpcf7submit - Le token est automatiquement ajouté au formulaire avant la soumission
- En cas de validation échouée, le formulaire affiche l'erreur retournée par le serveur
WooCommerce :
- Le token est mis à jour régulièrement via un intervalle JavaScript
- Lors de la soumission, le token est vérifié avant l'envoi
- Compatible avec l'événement
checkout_place_orderpour le formulaire de paiement - Gère automatiquement les mises à jour AJAX du checkout
Côté serveur (PHP)
Ninja Forms :
- La méthode
validate()du champ CapJS est appelée par Ninja Forms lors du traitement de la soumission - Le token correspond à la valeur du champ (mise à jour par le JavaScript)
- Une requête est envoyée au serveur CapJS pour valider le token
- En cas d'échec, une erreur est ajoutée au formulaire
Contact Form 7 :
- Le filtre
wpcf7_spamvérifie la présence du shortcode[capjs] - Le token
cap-token(ou le champ caché_wpcf7_capjs_token) est extrait des données POST - Une requête est envoyée au serveur CapJS pour valider le token
- En cas d'échec, la soumission est marquée comme spam et bloquée
WooCommerce :
- Filtres de validation pour chaque type de formulaire :
woocommerce_registration_errorspour l'inscriptionwoocommerce_process_login_errorspour la connexionpreprocess_commentpour les avis produitswoocommerce_after_checkout_validationpour le checkout
- Le token
capjs_wc_tokenest extrait des données POST - Une requête est envoyée au serveur CapJS pour valider le token
- En cas d'échec, une erreur est ajoutée et la soumission est bloquée
🎨 Personnalisation
Modifier le style du widget
Ajoutez du CSS personnalisé à votre thème :
.capjs-widget-container {
margin: 20px 0;
}
.capjs-widget {
padding: 20px;
border: 2px solid #0073aa;
border-radius: 8px;
background: #fff;
}
🐛 Débogage
Logs dans la console
Ouvrez la console du navigateur (F12) pour voir les logs :
[CapJS] Widget initialisé pour le champ 123
[CapJS] Token généré: capjs_token_abc123
[CapJS] Validation avant soumission: true capjs_token_abc123
[CapJS] Token ajouté à la soumission: capjs_token_abc123
Le widget ne s'affiche pas
- Vérifiez que la Site Key est configurée dans les réglages
- Vérifiez que Ninja Forms, Contact Form 7 ou WooCommerce est bien installé et activé
- Pour Contact Form 7, vérifiez que le shortcode
[capjs]est présent dans le formulaire - Pour WooCommerce, vérifiez que vous êtes sur une page compatible (my-account, checkout, produit)
- Vérifiez la console pour les erreurs JavaScript
- Videz le cache de WordPress
La validation échoue
- Vérifiez que l'URL du serveur CapJS est correcte
- Vérifiez que le serveur CapJS est accessible
- Vérifiez que la Secret Key est correcte
- Regardez les logs de la console réseau (onglet Network / Réseau)
- Activez
WP_DEBUGet vérifiez le fichierwp-content/debug.log
Le widget disparaît après une mise à jour AJAX (WooCommerce)
- Vérifiez que le script
capjs-woocommerce.jsest bien chargé - Ouvrez la console développeur et activez le mode debug en modifiant
capjs-woocommerce.js(ligne 10 :var DEBUG = true;) - Vérifiez que les événements WooCommerce sont bien écoutés (
updated_checkout,wc_fragments_refreshed)
Le checkout WooCommerce est bloqué avec un checkout multi-étapes
Symptômes :
- Le widget CapJS s'affiche sur la première étape du checkout
- À l'étape finale, le formulaire est rejeté avec une erreur "Veuillez valider le captcha"
- Le widget n'est pas visible sur l'étape finale
Solution :
- Allez dans Réglages → CapJS
- Dans la section Protection WooCommerce, décochez "Formulaire de paiement (checkout)"
- Enregistrez les modifications
- Videz le cache WordPress si nécessaire
- Testez une nouvelle commande
Vérification :
- Le widget ne doit plus apparaître sur le checkout
- La commande doit passer sans erreur de captcha
- Les formulaires de connexion/inscription restent protégés
Note : Si vous n'utilisez PAS de checkout multi-étapes et souhaitez protéger le checkout, vous pouvez réactiver cette option en toute sécurité.
📁 Structure des fichiers
m2c_wpcapjs/
├── m2c-wpcapjs.php # Fichier principal du plugin
├── admin/
│ └── settings-page.php # Page d'administration
├── includes/
│ ├── enqueue.php # Chargement des assets + template Ninja Forms
│ ├── ninja-forms/
│ │ └── field-capjs.php # Définition et validation du champ Ninja Forms
│ ├── contact-form-7/
│ │ ├── capjs-cf7.php # Intégration Contact Form 7
│ │ └── service.php # Service CapJS pour CF7
│ └── woocommerce/
│ └── capjs-woocommerce.php # Intégration WooCommerce
├── assets/
│ └── js/
│ ├── capjs-custom.js # Traduction du widget
│ ├── capjs-cf7.js # Logique Contact Form 7
│ └── capjs-woocommerce.js # Logique WooCommerce
└── README.md # Ce fichier
❓ Questions fréquentes
Q : Puis-je avoir plusieurs captchas dans un même formulaire ? R : Non, un seul captcha CapJS par formulaire est nécessaire et suffisant.
Q : Le captcha fonctionne-t-il avec les champs conditionnels de Ninja Forms ? R : Oui, le champ CapJS est compatible avec Ninja Forms Conditionals.
Q : Puis-je personnaliser l'apparence du captcha dans Contact Form 7 ?
R : Oui, utilisez les options theme et label dans le shortcode, ou ajoutez du CSS personnalisé ciblant .capjs-widget-container.
Q : Puis-je personnaliser l'apparence du captcha dans WooCommerce ?
R : Oui, ajoutez du CSS personnalisé ciblant .capjs-woocommerce cap-widget dans votre thème.
Q : Puis-je personnaliser le message d'erreur ? R : Oui, modifiez les chaînes dans les fichiers d'intégration :
- Ninja Forms :
field-capjs.phpet le script inline dansenqueue.php - Contact Form 7 :
capjs-cf7.php - WooCommerce :
capjs-woocommerce.php
Q : Le captcha fonctionne-t-il en AJAX ? R : Oui, Ninja Forms et WooCommerce utilisent AJAX et le plugin CapJS est totalement compatible avec ces systèmes.
Q : Puis-je désactiver CapJS sur certains formulaires WooCommerce ? R : Oui ! Depuis la version 1.4.0, vous pouvez activer/désactiver sélectivement chaque formulaire WooCommerce dans Réglages → CapJS → Protection WooCommerce. Cette fonctionnalité est particulièrement utile pour les sites utilisant des checkouts multi-étapes.
Q : Pourquoi la protection checkout est-elle désactivée par défaut ? R : Les checkouts multi-étapes et certains plugins de paiement peuvent avoir des problèmes de compatibilité avec le widget CapJS. Pour éviter de bloquer les commandes par défaut, cette protection est optionnelle. Les formulaires de connexion et d'inscription restent protégés par défaut pour assurer la sécurité.
Q : Le plugin fonctionne-t-il avec d'autres constructeurs de formulaires ? R : Actuellement, le plugin supporte Ninja Forms, Contact Form 7 et WooCommerce. D'autres intégrations (Gravity Forms, Elementor Forms) sont prévues.
Q : Dois-je héberger moi-même CapJS ? R : Oui, ce plugin nécessite une instance CapJS self-hosted accessible via HTTPS.
🔄 Mises à jour et support
- Documentation CapJS : capjs.js.org
- Support : Mak2com
- GitHub : Issues et contributions bienvenues
📝 Licence
Ce plugin est open-source et distribué sous licence MIT.
Développé avec ❤️ par Mak2com