Pourquoi quand je soumets un formulaire dans wordpress, il charge une page 404 bien que l'URL soit correcte


23

Je suis en train de créer un simple formulaire de contact, mais je remarque qu'il semble publier sur une page invalide. L'URL dans le navigateur est correcte mais le titre de la page est "Page non trouvée"

en haut de la page

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('example@example.com', $_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>

2
Quelle URL se trouve votre page?
MikeSchinkel

Le même problème apparaît si vous utilisez les abonnements WooCommerce et que vous avez un champ de saisie, nommé "abonnements". Il m'a fallu beaucoup de temps pour comprendre ce qui se passait et j'ai réussi à le réparer grâce à ce post. J'espère que quelqu'un qui utilise les abonnements WooCommerce et qui a un problème similaire trouve cela utile!
Whiplash

Réponses:


49

Je peux me tromper, mais je me souviens vaguement que: le nom, l'e-mail sont détournés par WordPress pour publier des commentaires, si vous avez renommé les éléments du formulaire en contact-name et contact-email, obtenez-vous le même problème?


1
Oui, c'est le champ du nom, placez-le comme jm_name à la place :)
Backie

Merci Tom! WP détournait en effet le formulaire. C'est étrange.
Svetoslav Marinov

Cela est également vrai pour AngularJS, au cas où cela aiderait. ;)
Mark

J'ai fait face à ce problème, cette réponse m'a dirigé vers la bonne voie. Je n'avais pas de champ avec le nom ou l'e-mail, mais l'un des noms d'entrée était égal au type de message personnalisé (cpt), donc il déclenchait la requête wp et 404. J'ai donc changé le nom du champ pour le rendre différent de cpt, et il a corrigé le problème.
Mohsin

4

Ce n'est pas seulement name un emailproblème, comme l'a écrit Tom. J'ai eu un problème même avec le champ de saisie avec l'attribut de nom identique à l'un de mes types de publication personnalisés. Par exemple:

...
<input type="text" name="movie">
...

Et lorsque vous aurez enregistré un "film" CPT ailleurs, votre soumission de formulaire se terminera avec une erreur 404.

Conclusion: Ne pas utiliser name, emailet any registered custom post type handleque le nom d'entrée valeur d'attribut dans vos formulaires.


Eh bien, j'ai essayé de répondre à la question d'origine avec des informations plus précises. Ehm, probablement ... :-) Ajout d'une petite retouche.
Marek

1

Essayez de changer name="email"pour quelque chose comme name="my_theme_email", faites la même chose avec tout votre champ, il semble qu'un nom soit réservé avec WordPress lors de l'envoi des données du formulaire. J'ai eu le même problème et je l'ai résolu comme ça.


0

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.