¿Por qué cuando envío un formulario en WordPress carga una página 404 aunque la URL sea correcta?

11 mar 2011, 10:06:07
Vistas: 31.7K
Votos: 38

Estoy creando un simple formulario de contacto, pero noto que parece publicar en una página no válida. La URL en el navegador es correcta pero el título de la página es "Página no encontrada"

en la parte superior de la página

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

abajo ... el HTML:

<form action="<?php the_permalink(); ?>" method="post" id="contactform">
    <div class="formelem">
        <label for="name">Nombre</label>
        <input type="text" name="name" class="required" />
    </div>
    <div class="formelem">
        <label for="email">Correo electrónico</label>
        <input type="text" name="email" class="required email" />
    </div>
    <div class="formelem">
        <label for="subject">Asunto</label>
        <input type="text" name="subject" class="required" />
    </div>
    <div class="formelem">
        <label for="content">Contenido</label>
        <textarea name="content" cols="30" rows="10" class="required"></textarea>
    </div>

    <input type="submit" value="Enviar Mensaje" name="submit" value="submit" />
</form>
2
Comentarios

¿Cuál es la URL de tu página?

MikeSchinkel MikeSchinkel
11 mar 2011 11:18:14

El mismo problema aparece si usas WooCommerce Subscriptions y tienes un campo de entrada llamado "subscriptions". Me tomó bastante tiempo entender lo que estaba pasando y logré solucionarlo gracias a esta publicación. ¡Espero que esto sea útil para alguien que use WooCommerce Subscriptions y tenga un problema similar!

Whiplash Whiplash
11 jun 2019 17:41:16
Todas las respuestas a la pregunta 5
7
84

Podría estar equivocado, pero tengo un vago recuerdo de que: name, email son secuestrados por WordPress para los comentarios de las publicaciones, si renombras los elementos del formulario a contact-name y contact-email, ¿tendrías el mismo problema?

11 mar 2011 13:09:08
Comentarios

Sí, es el campo de nombre, usa un namespace como jm_name en su lugar :)

Backie Backie
11 mar 2011 15:16:13

¡Gracias Tom! WP estaba efectivamente secuestrando el formulario. Eso es extraño.

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

Esto también aplica para AngularJS, por si ayuda. ;)

Mark Mark
13 sept 2018 23:36:00

Enfrenté este problema, esta respuesta me dirigió por el camino correcto. No tenía un campo con nombre o email, pero uno de los nombres de entrada era igual al tipo de publicación personalizada (CPT) por lo que estaba activando la consulta de wp y el error 404. Así que cambié el nombre del campo para que fuera diferente al CPT, y eso solucionó el problema.

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

Horrible, cuando se usa el nombre del campo de entrada como email no se puede insertar datos. Gracias, me ayudó.

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

¡Gracias! Tuve el mismo problema al usar el nombre s para la búsqueda de texto libre.

Punchlinern Punchlinern
11 ene 2021 15:27:06

Gracias por esto - me salvó después de horas de depuración

tiadotdev tiadotdev
5 feb 2022 02:13:11
Mostrar los 2 comentarios restantes
3

No es solo un problema con name o email, como escribió Tom. Yo tuve problemas incluso con un campo de entrada cuyo atributo name coincidía con uno de mis Tipos de Entradas Personalizados (CPT). Por ejemplo:

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

Y al tener registrado un CPT llamado "movie" en otro lugar, el envío de tu formulario terminará con un error 404.

Conclusión: No uses name, email ni ningún handle de tipo de entrada personalizado registrado como valor del atributo name en tus formularios.

5 nov 2014 14:32:42
Comentarios

Bueno, intenté responder a la pregunta original con información más precisa. Eh, probablemente... :-) Agregando una pequeña edición.

Marek Marek
18 nov 2014 17:38:36

Además, los nombres de taxonomías personalizadas no están permitidos como nombres de entrada

Marc Marc
26 mar 2020 15:30:32

Sí, hay una gran lista. Puedes encontrar ayuda aquí: https://www.infinitypp.com/wordpress/easily-fix-wordpress-post-request-wont-return-return-404-form-submission/

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

Intenta cambiar name="email" por algo como name="my_theme_email", haz lo mismo con todos tus campos. Parece que algunos nombres están reservados por WordPress al enviar datos de formularios. Tuve el mismo problema y lo solucioné de esa manera.

29 nov 2016 10:26:04
0

Funcionó para mí, solo cambié tus

input type name, email, subject y content por cualquier nombre como names, emails, subjects, contents.

Funcionará. Gracias.

20 dic 2018 17:22:13
2

Además, no puedes usar el año como nombre del campo.

22 may 2021 12:06:01
Comentarios

¿Qué campo? ¿Estás pasando el campo del año como parámetro en la cadena de consulta o como campo en un formulario enviado? Me sorprendería que esto fuera un problema general.

Rup Rup
23 may 2021 03:06:09

Campo en un formulario enviado.

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

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