De ce când trimit un formular în WordPress se încarcă o pagină 404 deși URL-ul este corect

11 mar. 2011, 10:06:07
Vizualizări: 31.7K
Voturi: 38

Creez un simplu formular de contact, dar observ că pare să transmită către o pagină invalidă. URL-ul din browser este corect dar titlul paginii este "Pagina nu a fost găsită"

în partea de sus a paginii

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

mai jos ... codul HTML:

<form action="<?php the_permalink(); ?>" method="post" id="contactform">
    <div class="formelem">
        <label for="name">Nume</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">Subiect</label>
        <input type="text" name="subject" class="required" />
    </div>
    <div class="formelem">
        <label for="content">Conținut</label>
        <textarea name="content" cols="30" rows="10" class="required"></textarea>
    </div>

    <input type="submit" value="Trimite Mesaj" name="submit" value="submit" />
</form>
2
Comentarii

La ce URL se află pagina ta?

MikeSchinkel MikeSchinkel
11 mar. 2011 11:18:14

Aceeași problemă apare dacă folosești WooCommerce Subscriptions și ai un câmp de introducere numit "subscriptions". Mi-a luat destul de mult timp să înțeleg ce se întâmplă și am reușit să o rezolv datorită acestui post. Sper că acest lucru va fi util pentru cineva care folosește WooCommerce Subscriptions și întâmpină o problemă similară!

Whiplash Whiplash
11 iun. 2019 17:41:16
Toate răspunsurile la întrebare 5
7
84

Poate greșesc, dar îmi amintesc vag că: name, email sunt preluate de WordPress pentru a posta comentarii, dacă ai redenumit elementele formularului în contact-name și contact-email, ai aceeași problemă?

11 mar. 2011 13:09:08
Comentarii

Da, este câmpul pentru nume, folosește un namespace precum jm_name în loc :)

Backie Backie
11 mar. 2011 15:16:13

Mulțumesc Tom! WP într-adevăr a preluat controlul formularului. Este ciudat.

Svetoslav Marinov Svetoslav Marinov
4 nov. 2016 23:30:43

Acest lucru este valabil și pentru AngularJS, în caz că te ajută. ;)

Mark Mark
13 sept. 2018 23:36:00

Am întâmpinat această problemă, acest răspuns m-a îndreptat pe calea cea bună. Nu aveam niciun câmp cu numele sau emailul, dar unul dintre numele de input era identic cu un tip de postare personalizat (CPT), astfel încât declanșa interogarea wp și eroarea 404. Așadar, am schimbat numele câmpului pentru a-l face diferit de CPT și asta a rezolvat problema.

Muhammad Asad Muhammad Asad
28 mai 2019 20:42:55

Groaznic, când folosești câmpul de input numit email, nu poți introduce date. Mulțumesc, m-ai ajutat.

Arman H Arman H
9 iul. 2020 06:32:17

Mulțumesc! Am avut aceeași problemă când am folosit numele s pentru căutarea de text liber.

Punchlinern Punchlinern
11 ian. 2021 15:27:06

Mulțumesc pentru asta - m-ai salvat după ore întregi de depanare

tiadotdev tiadotdev
5 feb. 2022 02:13:11
Arată celelalte 2 comentarii
3

Nu este doar problema cu name sau email, cum a scris Tom. Am avut probleme chiar și cu un câmp de input care avea atributul name identic cu unul dintre tipurile mele de postări personalizate (Custom Post Types). De exemplu:

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

Și când aveți înregistrat un CPT "movie" în altă parte, trimiterea formularului dvs. se va încheia cu o eroare 404.

Concluzie: Nu folosiți name, email sau orice handle de tip de postare personalizată înregistrat ca valoare a atributului name în formularele dumneavoastră.

5 nov. 2014 14:32:42
Comentarii

Ei bine, am încercat să răspund la întrebarea originală cu informații mai precise. Hm, probabil... :-) Adăugând o mică editare.

Marek Marek
18 nov. 2014 17:38:36

De asemenea, numele de taxonomii personalizate nu sunt permise ca nume de input

Marc Marc
26 mar. 2020 15:30:32

Da, există o listă mare. Puteți găsi ajutor de aici: https://www.infinitypp.com/wordpress/easily-fix-wordpress-post-request-wont-return-return-404-form-submission/

MD. Shafayatul Haque MD. Shafayatul Haque
29 iul. 2020 22:26:12
0

Încearcă să schimbi name="email" în ceva de genul name="my_theme_email", fă la fel cu toate câmpurile tale, se pare că unele nume sunt rezervate de WordPress la trimiterea datelor din formular. Am avut aceeași problemă și am rezolvat-o astfel.

29 nov. 2016 10:26:04
0

Funcționează și la mine, doar am schimbat

numele tipului de input de la name, email, subject și content la orice alt nume precum names, emails, subjects, contents.

Va funcționa. Mulțumesc.

20 dec. 2018 17:22:13
2

De asemenea, nu poți folosi anul ca nume al câmpului.

22 mai 2021 12:06:01
Comentarii

Ce câmp? Transmiți câmpul an ca parametru în șirul de interogare sau ca câmp într-un formular trimis? Aș fi surprins dacă aceasta ar fi o problemă generală.

Rup Rup
23 mai 2021 03:06:09

Câmp într-un formular trimis.

<input type="text" name="year"/>

Salman Patni Salman Patni
29 mai 2021 12:16:51