Почему при отправке формы в 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 :)
Backie
Спасибо, Том! WP действительно перехватывал форму. Это странно.
Svetoslav Marinov
Я столкнулся с этой проблемой, и данный ответ направил меня на правильный путь. У меня не было поля с именем или email, но имя одного из input совпадало с именем пользовательского типа записи (CPT), что вызывало срабатывание wp query и ошибку 404. Я изменил имя поля, чтобы оно отличалось от CPT, и это решило проблему.
Muhammad Asad
Ужасно, когда при использовании имени поля input email не удается вставить данные. Спасибо, помогло.
Arman H
Спасибо! У меня была такая же проблема при использовании имени s для свободного текстового поиска.
Punchlinern
Проблема не только в атрибутах name или email, как писал Том. У меня возникла проблема даже с полем ввода, у которого атрибут name совпадал с одним из моих типов записей (Custom Post Types). Например:
...
<input type="text" name="movie">
...
И если где-то зарегистрирован CPT "movie", отправка формы приведёт к ошибке 404.
Вывод: Не используйте name, email и любые зарегистрированные идентификаторы пользовательских типов записей в качестве значений атрибута name в ваших формах.
Что ж, я попытался ответить на оригинальный вопрос более точной информацией. Хм, возможно... :-) Добавил небольшую правку.
Marek
Также, имена пользовательских таксономий не разрешены в качестве имён для ввода
Marc
Да, существует большой список. Вы можете найти помощь здесь: https://www.infinitypp.com/wordpress/easily-fix-wordpress-post-request-wont-return-return-404-form-submission/
MD. Shafayatul Haque