Créer une page de contact sans plugin avec WordPress

La création d’un formulaire de contact avec WordPress est un classique ! 99% du temps, un plugin s’occupe de cet aspect. Toutefois, ce tutoriel vous apprendra comment créer un modèle de page de contact sans avoir recours à un plugin.


Présentation

Ce tutoriel est une reprise d’un article anglais très détaillé intitulé WordPress & jQuery Contact Form without a Plugin. Je me suis donc permis de raccourcir les étapes et de traduire le script en français. Tout les crédits reviennent cependant à son auteur !

Procédure d’installation

Étape n°1 – Téléchargement / téléversement

Commencez par télécharger l’archive ZIP française ou anglaise à partir des liens suivants :

file
Modèle de page WordPress pour créer un formulaire de contact sans plugin.

Contact form sans plugin, version française

Taille : 27,2 KiB  •  Date : 3 septembre 2010 •  Hits : 2 753

file
Modèle de page WordPress pour créer un formulaire de contact sans plugin.

Contact form sans plugin, version anglaise

Taille : 25,9 KiB  •  Date : 3 septembre 2010 •  Hits : 582

Décompressez le ZIP puis connectez-vous sur votre serveur FTP à l’aide de FileZilla, Cyberduck ou tout autre client FTP.

Rendez-vous ensuite dans le dossier /wp-content/themes/NOM_DU_THEME/

Déposez le contenu du dossier téléchargé dans le répertoire du thème à l’exception du fichier style.css. Vous risqueriez d’écraser votre feuille de styles !

Il nous faut donc copier / coller le contenu du fichier style.css dans votre feuille de styles du thème ; ajoutez les lignes de code en fin de fichier. Toutefois, si vous n’êtes pas à l’aise en CSS, vous pouvez ignorer cette étape et envisagez de styliser par la suite les différents éléments qui composent le formulaire de contact.

Étape n°2 – Modification du fichier contact-form.php

La seule étape compliquée de ce tutoriel est celle-ci !

A l’aide d’un éditeur de texte ou en utilisant la fonction d’édition de votre client FTP – présente sous FileZilla ou Cyberduck, modifiez le fichier contact-form.php. Localisez la ligne 51 puis indiquez l’adresse e-mail de destination ; autrement dit, celle à laquelle les messages seront envoyés.

Capture d'écran - Coda, modification du fichier contact-form.php

Saisissez votre adresse e-mail de destination (la vôtre)

Ce point est capital car vous ne recevrez rien tant que cette ligne n’aura pas été modifiée.

Étape n°3 – Création de la page de contact

Connectez-vous à présent dans votre administration WordPress puis déroulez le menu Pages et cliquez sur Ajouter.

Dans la section Attributs de la page, choisissez le modèle Contact Form. Faites Publier la page pour constater le résultat.

Capture d'écran - Attributs d'une page WordPress, modèle Contact Form

Attribuez le modèle Contact Form à votre page de contact

Pour vérifier le bon fonctionnement du formulaire, envoyez un message de test.

Désagréments

Il est fort probable que la mise en page ne concorde pas avec votre thème. En effet, il vous faudra recopier la structure du fichier page.php pour que votre formulaire de contact soit correct.

Vous pouvez – par exemple, faire une copie du modèle de contact. Écrasez la totalité du contenu par celui du fichier page.php puis recollez les seules parties internes du fichier contact-form.php. Suis-je clair ?

Le thème TwentyTen fonctionne parfaitement néanmoins.

Une fois de plus, les modèles de page nous viennent en aide pour créer des types de contenu très classique en matière de blogging qu’est le formulaire de contact. Certes, le strict minimum nous est proposé ici – notez tout de même la sécurité anti-spam, mais ce modèle conviendra à de nombreux utilisateurs. Et puis, c’est toujours un plugin en moins, n’est-ce pas ?

Crédits photo : Eole

Articles relatifs

53 réflexions au sujet de « Créer une page de contact sans plugin avec WordPress »

  1. Ça c’est pas mal : avec ce tuto je vais peut-être pouvoir me passer de CformsII. Quand j’aurais un peu de courage pour m’atteler à la tâche j’essaierai votre solution et, le cas échéant, je vous ferais un retour.

  2. Ping : Alléger WordPress

  3. Ping : Le petit journal du web : HTML5, CSS3, jQuery, WordPress, Métiers du Web, Vie quotidienne et Nostalgeek

  4. Le modèle de page contact form n’apparaît pas dans ma liste de choix de modèle de quoi peut venir ce souci? Je suis sur WP3 avec le thème twentyten.
    Doit-on déclarer le nouveau template quelque part?
    Merci de votre aide

    • Tu n’as pas d’anti-spam à proprement parler si ce n’est un champ texte à ne pas remplir.

      Maintenant, tout dépend si tu vas recevoir du spam. Tu peux tester cette solution dans un premier temps puis passer sur un plugin WordPress.

      • Tiens ! Je retrouve avec plaisir cette page (ainsi que ses fichiers d’origine que j’avais perdu…).

        Pour l’antispam : en un an d’utilisation je n’ai jamais été spamé avec ce code. Si cela peu répondre à la question…

        J’ajoute aussi que j’ai viré le javascript du code proposé : le php est suffisant…

  5. Bonne idée cette traduction mais des erreurs se sont insinuées, il ne faut PAS traduire les en-têtes de la fonction mail() .
    On doit rester avec $headers = From: mon site ‘ . « \r\n » . ‘Reply-To: ‘ . $email;
    pour garder un en-tête correctement formaté. Ce n’est pas dramatique mais le serveur mail qui envoye/qui reçoit risque de ne pas être content et de ne pas traiter la requête. Au pire donc, on ne reçoit rien, au mieux on reçoit un message où il n’est pas possible de profiter du reply-to et où l’expéditeur est l’adresse générique du serveur mail style « root@provideur.fr »

      • j’ai eu des problème avec ce bout de code … en remplaçant « de » par « from » ça marche mieux …

        maintenant je me bagarre avec les accents qui ne passent pas correctement
        é devient é

          • Dans votre éditeur genre Notepad++ il y a une option déclinant toute une liste de formatage, il faut cocher UTF-8.

            Je n’ai pas bien compris comment cela influence le traitement du fichier d’ailleurs, il n’y a pas longtemps je pensais qu’il suffisait de déclarer le format dans le header du site une fois pour toute.

        • Bonjour à tous,
          Pour que ça fonctionne, il faut remplacer :

          $comments = stripslashes(trim($_POST['comments']));
          } else {
          $comments = trim($_POST['comments']);

          par :

          $comments = utf8_decode(stripslashes(trim($_POST['comments'])));
          } else {
          $comments = utf8_decode(trim($_POST['comments']));

  6. Bonjour,
    Merci pour ce tuto. Je souhaite faire la même chose, mais je souhaiterais, que dans contact form au lieu de mettre dans
    $emailTo l’adresse mail à la mano.
    Qu’il y ai une variable qui aille chercher le mail qu’il y a inscrit dans directement au niveau de l’utilisateur WordPress.
    Est ce possible ? merci pour votre aide

  7. très intéressant ce tuto, plugins facile à mettre en place et à configurer. je t’encourage à nous proposer toujours des solutions aussi efficace.

    Merci !

  8. Hello Aurélien j’ai eu un ptit soucis en faisant ton tutorial. Tout s’est bien passé, en soi. Mais il reste juste un petit problème que je pense que tu peux résoudre. Je sais pas pourquoi mais mon contact form. Php m’insère deux fois la même chose comme ci c’était un miroir tu sais me dire à quoi ca correspond ? http://beatchronic.com/contact/

  9. Bonjour,

    J’ai testé ce formulaire que je trouve vraiment bien. Mon problème est simple: Je ne reçois rien, même après avoir re-re-vérifier que j’avais bien entré mon adresse e-mail… Avez-vous déjà vu ce genre de problème ? J’ai suivi le conseil de David qui disait de remettre certaines lignes en anglais… Mais toujours rien :(
    Merci d’avance pour votre réponse ! Et merci pour ce chouette tuto !!

  10. Ping : Créer une page de contact sans plugin avec WordPress « la bibliothèque, et veiller

Laisser un commentaire

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

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>