Perché quando invio un modulo in WordPress viene caricata una pagina 404 anche se l'URL è corretto

11 mar 2011, 10:06:07
Visualizzazioni: 31.7K
Voti: 38

Sto creando un semplice modulo di contatto, ma noto che sembra inviare i dati a una pagina non valida. L'URL nel browser è corretto ma il titolo della pagina è "Pagina non trovata"

nella parte superiore della pagina

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

qui sotto... l'HTML:

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

    <input type="submit" value="Invia Messaggio" name="submit" value="submit" />
</form>
2
Commenti

A quale URL si trova la tua pagina?

MikeSchinkel MikeSchinkel
11 mar 2011 11:18:14

Lo stesso problema si verifica se utilizzi WooCommerce Subscriptions e hai un campo di input denominato "subscriptions". Mi ci è voluto parecchio tempo per capire cosa stesse succedendo e sono riuscito a risolverlo grazie a questo post. Spero che qualcuno che utilizza WooCommerce Subscriptions e ha un problema simile trovi questo commento utile!

Whiplash Whiplash
11 giu 2019 17:41:16
Tutte le risposte alla domanda 5
7
84

Potrei sbagliarmi, ma ricordo vagamente che: name, email vengono "hijackati" da WordPress per gestire i commenti ai post. Se rinomini gli elementi del form in contact-name e contact-email, ottieni lo stesso problema?

11 mar 2011 13:09:08
Commenti

Sì, è il campo del nome, usa un namespace tipo jm_name invece :)

Backie Backie
11 mar 2011 15:16:13

Grazie Tom! WP stava effettivamente dirottando il form. Strano.

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

Vale anche per AngularJS, nel caso possa aiutare. ;)

Mark Mark
13 set 2018 23:36:00

Mi sono imbattuto in questo problema, questa risposta mi ha indirizzato sulla strada giusta. Non avevo un campo con nome o email, ma uno degli input aveva un nome uguale a un custom post type (cpt) quindi attivava la query di wp e dava 404. Quindi ho cambiato il nome del campo per renderlo diverso dal cpt, e questo ha risolto il problema.

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

Terribile, quando si usa il nome del campo di input 'email' non è possibile inserire i dati. Grazie, mi hai aiutato

Arman H Arman H
9 lug 2020 06:32:17

Grazie! Avevo lo stesso problema quando usavo il nome s per la ricerca a testo libero.

Punchlinern Punchlinern
11 gen 2021 15:27:06

Grazie mille per questo - mi hai salvato dopo ore di debug

tiadotdev tiadotdev
5 feb 2022 02:13:11
Mostra i restanti 2 commenti
3

Non è solo un problema di name o email, come ha scritto Tom. Ho avuto problemi anche con campi input che avevano l'attributo name uguale a uno dei miei Custom Post Types. Per esempio:

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

E quando hai registrato un CPT "movie" da qualche altra parte, l'invio del tuo form si concluderà con un errore 404.

Conclusione: Non usare name, email e qualsiasi handle di custom post type registrato come valore dell'attributo name nei tuoi form.

5 nov 2014 14:32:42
Commenti

Bene, ho cercato di rispondere alla domanda originale con informazioni più accurate. Ehm, probabilmente... :-) Aggiungendo una piccola modifica.

Marek Marek
18 nov 2014 17:38:36

Inoltre, i nomi delle tassonomie personalizzate non sono consentiti come nomi di input

Marc Marc
26 mar 2020 15:30:32

Sì, c'è un lungo elenco. Puoi trovare aiuto da qui: https://www.infinitypp.com/wordpress/easily-fix-wordpress-post-request-wont-return-return-404-form-submission/

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

Prova a cambiare name="email" in qualcosa come name="my_theme_email", fai lo stesso con tutti i tuoi campi. Sembra che alcuni nomi siano riservati in WordPress quando si inviano dati da un modulo. Ho avuto lo stesso problema e l'ho risolto in questo modo.

29 nov 2016 10:26:04
0

Funziona anche per me, ho solo modificato i tuoi

input type name, email, subject e content con qualsiasi nome come names, emails, subjects e contents.

Funzionerà. Grazie.

20 dic 2018 17:22:13
2

Inoltre, non puoi utilizzare "year" come nome del campo.

22 mag 2021 12:06:01
Commenti

Quale campo? Stai passando il campo dell'anno come parametro nella stringa di query o come campo in un form inviato? Sarei sorpreso se fosse un problema generale.

Rup Rup
23 mag 2021 03:06:09

Campo in un form inviato.

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

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