WordPress
Ajoutez un formulaire Ikiform à WordPress avec le bloc HTML personnalisé, ou enregistrez un code court pour que n'importe quel auteur puisse placer le même formulaire partout.
Les extensions de formulaire traitent les soumissions dans WordPress : leurs formulaires renvoient vers votre propre site, et l'extension stocke le résultat et l'envoie par e-mail. Un simple formulaire HTML pointé vers Ikiform se passe de l'extension, de la base de données et de la configuration e-mail, et continue de fonctionner sur les pages en cache car il ne contient aucun nonce WordPress.
Qui peut coller un formulaire
WordPress filtre le HTML des articles et des pages. Pour toute personne sans la capacité unfiltered_html, il supprime <form> et <input> à l'enregistrement du contenu.
| Site | Qui peut enregistrer un formulaire dans un bloc HTML personnalisé |
|---|---|
| Auto-hébergé, site unique | Administrateurs et éditeurs |
| Multisite auto-hébergé | Super admins uniquement |
DISALLOW_UNFILTERED_HTML réglé sur true dans wp-config.php | Personne. Utilisez le code court. |
| WordPress.com | Toute personne pouvant modifier, mais seulement avec un plan payant dont les fonctionnalités d'hébergement sont activées. Elles s'activent quand vous installez une extension. Sur les autres plans, les balises sont supprimées. |
Bloc HTML personnalisé
Ajoutez le bloc
Dans l'éditeur de blocs, tapez
/htmlet choisissez HTML personnalisé (Custom HTML). Pour placer le formulaire sur chaque page, ajoutez plutôt le bloc à une partie de modèle, comme le pied de page, dans l'éditeur du site.Collez le formulaire
HTML personnalisé <form class="ikiform" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post"> <p><label>Name <input name="name" autocomplete="name" required></label></p> <p><label>Email <input name="email" type="email" autocomplete="email" required></label></p> <p><label>Message <textarea name="message" rows="5"></textarea></label></p> <input type="hidden" name="_redirect" value="https://example.com/thank-you/"> <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden> <p><button type="submit" class="wp-element-button">Send</button></p> </form>wp-element-buttondonne au bouton le style de bouton de votre thème dans les thèmes de blocs. Le formulaire hérite des polices et des styles d'input de votre thème, donc il n'a généralement besoin d'aucun CSS.Prévisualisez, puis mettez à jour
Utilisez l'onglet Aperçu (Preview) du bloc, puis enregistrez. Rechargez l'éditeur et rouvrez le bloc : si les balises
<form>et<input>ont disparu, votre compte ne peut pas les enregistrer. Utilisez le code court ci-dessous.
_redirect ne fonctionne que si le formulaire a des domaines autorisés qui incluent votre site ; sinon, les visiteurs voient la page de remerciement d'Ikiform. Vous pouvez aussi définir Redirect after submit dans les paramètres du formulaire et retirer l'input masqué.
Un code court
Un code court garde le HTML dans du PHP, que le filtre de contenu ne touche pas : les auteurs et contributeurs peuvent donc aussi placer le formulaire. Enregistrez ceci comme extension must-use, que WordPress charge automatiquement :
<?php
add_shortcode('ikiform', function ($atts) {
$atts = shortcode_atts([
'id' => 'frm_xxxxxxxxxxxxxxxx',
'subject' => '',
'redirect' => '',
'button' => 'Send',
], $atts, 'ikiform');
ob_start();
?>
<form class="ikiform" action="<?php echo esc_url('https://ikiform.com/f/' . rawurlencode($atts['id'])); ?>" method="post">
<p><label>Email <input name="email" type="email" autocomplete="email" required></label></p>
<p><label>Message <textarea name="message" rows="5"></textarea></label></p>
<?php if ($atts['subject']) : ?>
<input type="hidden" name="_subject" value="<?php echo esc_attr($atts['subject']); ?>">
<?php endif; ?>
<?php if ($atts['redirect']) : ?>
<input type="hidden" name="_redirect" value="<?php echo esc_url($atts['redirect']); ?>">
<?php endif; ?>
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
<p><button type="submit" class="wp-element-button"><?php echo esc_html($atts['button']); ?></button></p>
</form>
<?php
return ob_get_clean();
});Ajoutez ensuite un bloc Code court (Shortcode), ou tapez le code court dans n'importe quel contenu :
[ikiform subject="New enquiry" redirect="https://example.com/thank-you/"]- Passez
idpour utiliser un autre formulaire :[ikiform id="frm_..."]. - Modifiez les champs dans le PHP pour qu'ils correspondent à votre formulaire. Chaque input doté d'un
nameest stocké. - Dans l'éditeur classique, collez le HTML brut uniquement dans l'onglet Texte (Text). L'éditeur visuel ajoute des balises
<p>et<br>dans le formulaire. Le code court évite ce problème.
Domaines autorisés
Listez chaque adresse sur laquelle le site répond. Les sites WordPress en ont souvent plusieurs pendant la construction.
| Où tourne le formulaire | À ajouter aux domaines autorisés |
|---|---|
| Votre domaine en ligne | example.com, qui couvre aussi www.example.com |
| Adresse WordPress.com | your-site.wordpress.com, ou your-site.wpcomstaging.com pour les sites de staging |
| Le site de staging de votre hébergeur | L'hôte de staging indiqué dans le tableau de bord de votre hébergeur |
| Développement local | localhost, ou le nom d'hôte local fourni par votre outil, comme my-site.local |
- N'ajoutez jamais
wordpress.comouwpcomstaging.comseul. Tous les sites de cet hébergeur correspondraient, y compris ceux des autres.
Checklist de test
- Déconnectez-vous, ou ouvrez une fenêtre de navigation privée. Les admins connectés contournent certains caches et voient une page légèrement différente.
- Envoyez le formulaire et vérifiez la soumission dans Ikiform, parmi les reçues plutôt que dans le spam.
- Vérifiez que vous arrivez sur votre page de remerciement. Si vous voyez celle d'Ikiform, le site manque dans les domaines autorisés ou l'URL
_redirectn'est pas enhttps:. - Modifiez la page avec un compte non administrateur et vérifiez que le formulaire résiste à l'enregistrement, ou utilisez le code court.
Dépannage
| Ce que vous voyez | Pourquoi | Solution |
|---|---|---|
| Les champs du formulaire disparaissent à l'enregistrement, seuls les libellés restent | Votre compte n'a pas unfiltered_html, ou le plan WordPress.com filtre form et input | Utilisez le code court, ou demandez à un administrateur de coller le bloc. |
Des balises <p> et <br> parasites cassent la mise en page | Le mode visuel de l'éditeur classique a reformaté le HTML | Utilisez un bloc HTML personnalisé ou le code court. |
La console du navigateur indique que les données du formulaire ont été refusées à cause de la directive form-action | Une extension de sécurité ou votre hébergeur envoie un en-tête Content-Security-Policy | Ajoutez https://ikiform.com à form-action, et à connect-src si vous envoyez avec fetch. |
Les soumissions arrivent dans le filtre spam avec origin_mismatch | La page qui a envoyé ne fait pas partie des domaines autorisés du formulaire | Ajoutez l'hôte du tableau ci-dessus. Avec Reject, les mêmes envois reçoivent plutôt 403 origin_not_allowed. |
422 validation_failed signalant un champ inconnu | Le formulaire a des champs définis et le nom d'un input n'en fait pas partie | Renommez l'input avec l'id du champ, ou faites-le commencer par _ s'il ne sert que de marqueur pour vous. |