web-dev-qa-db-fra.com

Pourquoi quand je soumets un formulaire dans wordpress, il charge une page de 404 si l'URL est correcte

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>
19
JM at Work

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?

43
Tom

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.

4
Marek

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.

1
Thierry Edou

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.

0
Y. Joy Ch. Singha