ID du formulaire

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.

SiteQui peut enregistrer un formulaire dans un bloc HTML personnalisé
Auto-hébergé, site uniqueAdministrateurs et éditeurs
Multisite auto-hébergéSuper admins uniquement
DISALLOW_UNFILTERED_HTML réglé sur true dans wp-config.phpPersonne. Utilisez le code court.
WordPress.comToute 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é

  1. Ajoutez le bloc

    Dans l'éditeur de blocs, tapez /html et 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.

  2. 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-button donne 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.

  3. 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 :

wp-content/mu-plugins/ikiform.php
<?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 :

Bloc Code court
[ikiform subject="New enquiry" redirect="https://example.com/thank-you/"]
  • Passez id pour utiliser un autre formulaire : [ikiform id="frm_..."].
  • Modifiez les champs dans le PHP pour qu'ils correspondent à votre formulaire. Chaque input doté d'un name est 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 ligneexample.com, qui couvre aussi www.example.com
Adresse WordPress.comyour-site.wordpress.com, ou your-site.wpcomstaging.com pour les sites de staging
Le site de staging de votre hébergeurL'hôte de staging indiqué dans le tableau de bord de votre hébergeur
Développement locallocalhost, ou le nom d'hôte local fourni par votre outil, comme my-site.local
  • N'ajoutez jamais wordpress.com ou wpcomstaging.com seul. Tous les sites de cet hébergeur correspondraient, y compris ceux des autres.

Checklist de test

  1. 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.
  2. Envoyez le formulaire et vérifiez la soumission dans Ikiform, parmi les reçues plutôt que dans le spam.
  3. 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 _redirect n'est pas en https:.
  4. 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 voyezPourquoiSolution
Les champs du formulaire disparaissent à l'enregistrement, seuls les libellés restentVotre compte n'a pas unfiltered_html, ou le plan WordPress.com filtre form et inputUtilisez le code court, ou demandez à un administrateur de coller le bloc.
Des balises <p> et <br> parasites cassent la mise en pageLe mode visuel de l'éditeur classique a reformaté le HTMLUtilisez 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-actionUne extension de sécurité ou votre hébergeur envoie un en-tête Content-Security-PolicyAjoutez https://ikiform.com à form-action, et à connect-src si vous envoyez avec fetch.
Les soumissions arrivent dans le filtre spam avec origin_mismatchLa page qui a envoyé ne fait pas partie des domaines autorisés du formulaireAjoutez 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 inconnuLe formulaire a des champs définis et le nom d'un input n'en fait pas partieRenommez l'input avec l'id du champ, ou faites-le commencer par _ s'il ne sert que de marqueur pour vous.