web-dev-qa-db-de.com

Warum, wenn ich ein Formular in WordPress abschicke, wird eine 404-Seite geladen, obwohl die URL korrekt ist

Ich erstelle gerade ein einfaches Kontaktformular, stelle jedoch fest, dass es auf einer ungültigen Seite zu posten scheint. Die URL im Browser ist korrekt, aber der Titel der Seite lautet "Seite nicht gefunden".

oben auf der Seite

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('[email protected]', $_POST['subject'], $_POST['content']);
    $emailed = true;
}

unten ... der 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

Ich könnte mich irren, erinnere mich aber vage daran: Name, E-Mail wird von WordPress entführt, um Kommentare zu posten. Wenn Sie die Formularelemente in Kontaktname und Kontakt-E-Mail umbenennen, erhalten Sie dasselbe Problem?

43
Tom

Es ist nicht nur ein name oder email Problem, wie Tom schrieb. Ich hatte sogar ein Problem mit dem Eingabefeld mit dem gleichen Namensattribut wie einer meiner benutzerdefinierten Beitragstypen. Zum Beispiel:

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

Und wenn Sie den CPT "Film" an einer anderen Stelle registriert haben, endet das Absenden Ihres Formulars mit dem Fehler 404.

Schlussfolgerung: Verwenden Sie name, email und any registered custom post type handle nicht als Attributwert für den Eingabenamen in Ihren Formularen.

4
Marek

Versuchen Sie, name="email" in name="my_theme_email" zu ändern. Machen Sie dasselbe mit Ihrem ganzen Feld, es klingt so, als ob ein Name für WordPress reserviert ist, wenn Sie Formulardaten senden. Ich habe das gleiche Problem und ich habe es so behoben.

1
Thierry Edou

Es funktioniert bei mir, nur deine geändert

input type name, email, subject, and content to any name as names, emails, subjects, contents.

Es wird klappen. Vielen Dank.

0