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

23

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>
JM bei der Arbeit
quelle
2
Welche URL befindet sich auf Ihrer Seite?
MikeSchinkel
Das gleiche Problem tritt auf, wenn Sie WooCommerce-Abonnements verwenden und ein Eingabefeld mit dem Namen "Abonnements" haben. Es hat ziemlich lange gedauert, bis ich herausgefunden habe, was los ist, und ich habe es dank dieses Beitrags geschafft, das Problem zu beheben. Ich hoffe, dass jemand, der WooCommerce-Abonnements verwendet und ein ähnliches Problem hat, dies hilfreich findet!
Schleudertrauma

Antworten:

49

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 umbenannt haben, haben Sie das gleiche Problem?

Tom
quelle
1
Ja, es ist das Namensfeld, Namespace wie jm_name stattdessen :)
Backie
Vielen Dank, Tom! WP entführte tatsächlich die Form. Das ist merkwürdig.
Svetoslav Marinov
Dies gilt auch für AngularJS, falls dies hilfreich ist. ;)
Mark
Diese Antwort hat mich auf den richtigen Weg gebracht. Ich hatte kein Feld mit Namen oder E-Mail, aber einer der eingegebenen Namen entsprach dem benutzerdefinierten Post-Typ (cpt), sodass die WP-Abfrage und 404 ausgelöst wurden Problem.
Mohsin
4

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

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

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

Fazit: Verwenden Sie nicht name, emailund any registered custom post type handleals Eingabename Attributwert in Ihren Formularen.

Marek
quelle
Nun, ich habe versucht, die ursprüngliche Frage mit genaueren Informationen zu beantworten. Ähm, wahrscheinlich ... :-) Ein bisschen nachbearbeiten.
Marek
1

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

Thierry Edou
quelle
0

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.

Y. Joy Ch. Singha
quelle