Dlaczego kiedy przesyłam formularz w wordpress, ładuje stronę 404, chociaż URL jest poprawny


23

Właśnie tworzę prosty formularz kontaktowy, ale zauważam, że wydaje się on publikować na niewłaściwej stronie. Adres URL w przeglądarce jest poprawny, ale tytuł strony to „Nie znaleziono strony”

na górze strony

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('example@example.com', $_POST['subject'], $_POST['content']);
    $emailed = true;
}

poniżej ... 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
Jaki adres URL znajduje się na Twojej stronie?
MikeSchinkel,

Ten sam problem pojawia się, jeśli korzystasz z subskrypcji WooCommerce i masz pole wejściowe o nazwie „subskrypcje”. Długo zajęło mi ustalenie, co się dzieje i udało mi się to naprawić dzięki temu wpisowi. Mam nadzieję, że ktoś korzystający z subskrypcji WooCommerce i mający podobny problem uzna to za pomocne!
Whiplash

Odpowiedzi:


49

Mogę się mylić, ale niejasno pamiętam, że: imię, adres e-mail zostają przechwycone przez WordPress w celu publikowania komentarzy, jeśli zmieniłeś nazwy elementów formularza na nazwa-kontaktu i kontakt-e-mail, czy masz ten sam problem?


1
Tak, to pole nazwy, zamiast tego przestrzeń nazw to jm_name :)
Backie

Dzięki Tom! WP rzeczywiście przejmowało formularz. To jest dziwne.
Svetoslav Marinov

Dotyczy to również AngularJS, na wypadek gdyby to pomogło. ;)
Mark

Napotkałem ten problem, ta odpowiedź skierowała mnie na właściwą ścieżkę. Nie miałem pola z nazwą ani adresem e-mail, ale jedno z nazw wejściowych było równe niestandardowemu typowi postu (cpt), więc wyzwalało zapytanie wp i 404. Więc zmieniłem nazwę pola, aby różniła się od cpt, i naprawiła kwestia.
Mohsin

4

To nie tylko name lub emailproblem, jak Tom napisał. Miałem problem nawet z polem wejściowym z takim samym atrybutem nazwy jak jeden z moich niestandardowych typów postów. Na przykład:

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

Po zarejestrowaniu „filmu” CPT w innym miejscu, przesłanie formularza zakończy się błędem 404.

Wnioski: Nie używać name, emaili any registered custom post type handlejak nazwa wejścia wartości atrybutu w swoich formach.


Próbowałem odpowiedzieć na oryginalne pytanie, podając dokładniejsze informacje. Ehm, prawdopodobnie ... :-) Dodam trochę edycji.
Marek

1

Spróbuj zmienić name="email"na coś podobnego name="my_theme_email", zrób to samo ze wszystkimi polami. Wygląda na to, że niektóre nazwy są zastrzeżone w WordPressie podczas wysyłania danych formularza. Mam ten sam problem i tak go naprawiłem.


0

Działa mi, właśnie zmieniłem twoje

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

To będzie działać. Dzięki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.