Je viens de créer un formulaire de contact simple, mais je remarque qu'il semble publier sur une page non valide. L'URL dans le navigateur est correct mais le titre de la page est "Page introuvable"
en haut de la page
$emailed = false;
if (isset($_POST['submit'])) {
wp_mail('[email protected]', $_POST['subject'], $_POST['content']);
$emailed = true;
}
ci-dessous ... le HTML:
<form action="<?php the_permalink(); ?>" method="post" id="contactform">
<div class="formelem">
<label for="name">Name</label>
<input type="text" name="name" class="required" />
</div>
<div class="formelem">
<label for="email">Email</label>
<input type="text" name="email" class="required email" />
</div>
<div class="formelem">
<label for="subject">Subject</label>
<input type="text" name="subject" class="required" />
</div>
<div class="formelem">
<label for="content">Content</label>
<textarea name="content" cols="30" rows="10" class="required"></textarea>
</div>
<input type="submit" value="Submit Message" name="submit" value="submit" />
</form>
Je peux me tromper, mais je me souviens vaguement que: nom, email soit détourné par WordPress pour poster des commentaires, si vous renommiez les éléments de formulaire en contact-name et contact-email, avez-vous le même problème?
Ce n'est pas seulement un problème name
ou email
, comme l'a écrit Tom. J'avais un problème même avec le champ de saisie avec l'attribut name identique à l'un de mes types de publication personnalisés. Par exemple:
...
<input type="text" name="movie">
...
Et lorsque vous avez enregistré CPT "film" ailleurs, la soumission de votre formulaire se terminera par une erreur 404.
Conclusion: n'utilisez pas name
, email
et any registered custom post type handle
comme valeur d'attribut de nom d'entrée dans vos formulaires.
Essayez de remplacer name="email"
par quelque chose comme name="my_theme_email"
. Faites de même avec tout votre champ. Il semble qu'un nom soit réservé avec WordPress lors de l'envoi de données de formulaire. J'ai eu le même problème et je l'ai résolu comme ça.
Cela fonctionne pour moi, juste changé votre
input type name, email, subject, and content to any name as names, emails, subjects, contents.
Ça va marcher. Merci.