Почему при отправке формы в WordPress загружается страница 404, хотя URL правильный
Я создаю простую контактную форму, но замечаю, что она, похоже, отправляется на недействительную страницу. URL в браузере правильный, но заголовок страницы показывает "Страница не найдена"
в верхней части страницы
$emailed = false;
if (isset($_POST['submit'])) {
wp_mail('example@example.com', $_POST['subject'], $_POST['content']);
$emailed = true;
}
ниже ... HTML:
<form action="<?php the_permalink(); ?>" method="post" id="contactform">
<div class="formelem">
<label for="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">Тема</label>
<input type="text" name="subject" class="required" />
</div>
<div class="formelem">
<label for="content">Содержание</label>
<textarea name="content" cols="30" rows="10" class="required"></textarea>
</div>
<input type="submit" value="Отправить сообщение" name="submit" value="submit" />
</form>

Да, это поле имени, назови его через пространство имен, например jm_name :)

Спасибо, Том! WP действительно перехватывал форму. Это странно.

Я столкнулся с этой проблемой, и данный ответ направил меня на правильный путь. У меня не было поля с именем или email, но имя одного из input совпадало с именем пользовательского типа записи (CPT), что вызывало срабатывание wp query и ошибку 404. Я изменил имя поля, чтобы оно отличалось от CPT, и это решило проблему.

Ужасно, когда при использовании имени поля input email не удается вставить данные. Спасибо, помогло.

Спасибо! У меня была такая же проблема при использовании имени s
для свободного текстового поиска.

Проблема не только в атрибутах name
или email
, как писал Том. У меня возникла проблема даже с полем ввода, у которого атрибут name совпадал с одним из моих типов записей (Custom Post Types). Например:
...
<input type="text" name="movie">
...
И если где-то зарегистрирован CPT "movie", отправка формы приведёт к ошибке 404.
Вывод: Не используйте name
, email
и любые зарегистрированные идентификаторы пользовательских типов записей
в качестве значений атрибута name в ваших формах.

Что ж, я попытался ответить на оригинальный вопрос более точной информацией. Хм, возможно... :-) Добавил небольшую правку.

Также, имена пользовательских таксономий не разрешены в качестве имён для ввода

Да, существует большой список. Вы можете найти помощь здесь: https://www.infinitypp.com/wordpress/easily-fix-wordpress-post-request-wont-return-return-404-form-submission/
