Почему, когда я отправляю форму в WordPress, она загружает страницу 404, хотя URL-адрес правильный


23

Я просто создаю простую контактную форму, но замечаю, что она, похоже, публикуется на неверной странице. 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">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">Subject</label>
        <input type="text" name="subject" class="required" />
    </div>
    <div class="formelem">
        <label for="content">Content</label>
        <textarea name="content" cols="30" rows="10" class="required"></textarea>
    </div>

    <input type="submit" value="Submit Message" name="submit" value="submit" />
</form>

2
Какой URL находится на вашей странице?
MikeSchinkel

Та же проблема возникает, если вы используете подписки WooCommerce и у вас есть поле ввода с именем «подписки». Мне потребовалось довольно много времени, чтобы понять, что происходит, и мне удалось исправить это благодаря этому посту. Я надеюсь, что кто-то, использующий подписки WooCommerce и имеющий подобную проблему, найдет это полезным!
Whiplash

Ответы:


49

Я могу ошибаться, но я смутно помню, что: WordPress захватывает имя, электронную почту для отправки комментариев, если вы переименовали элементы формы в contact-name и contact-email, у вас возникает та же проблема?


1
Да, это поле имени, пространство имен вместо jm_name :)
Backie

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

Это также верно для AngularJS, в случае, если это помогает. ;)
Марк

Я столкнулся с этой проблемой, этот ответ направил меня на правильный путь. У меня не было поля с именем или адресом электронной почты, но одно из входных имен было равно настраиваемому типу записи (cpt), поэтому оно вызывало запрос wp и 404. Поэтому я изменил имя поля, чтобы оно отличалось от cpt, и он исправил вопрос.
Мохсин

4

Это не только name или emailпроблема, как писал Том. У меня была проблема даже с полем ввода с атрибутом имени, таким же, как один из моих пользовательских типов постов. Например:

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

А когда вы зарегистрировали CPT-фильм, где-нибудь еще, отправка вашей формы закончится с ошибкой 404.

Вывод: не используйте name, emailа в any registered custom post type handleкачестве входного значения атрибута name в ваших формах.


Ну, я попытался ответить на оригинальный вопрос с более точной информацией. Эмм, наверное ... :-) Добавим немного правки.
Марек

1

Попробуйте изменить name="email"что-то вроде name="my_theme_email", сделайте то же самое со всеми вашими полями, звучит так, как будто некоторые имена зарезервированы в WordPress при отправке данных формы. У меня та же проблема, и я исправил ее вот так.


0

Это работает для меня, просто изменил ваш

input type name, email, subject, and content to any name as names, emails, subjects, contents.

Это сработает. Спасибо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.