Чому коли я надсилаю форму в 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, щоб робити коментарі, якщо ви перейменовували елементи форми на контакт-ім’я та контактну електронну пошту, ви отримуєте те саме питання?


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якості значення атрибута імені введення в ваших формах.


Ну, я спробував відповісти на оригінальне запитання з точнішою інформацією. Ем, мабуть ... :-) Додавання трохи редагування.
Марек

1

Спробуйте змінити name="email"щось на зразок name="my_theme_email", зробіть те ж саме зі всім своїм полем, це звучить так, що якесь ім’я зарезервовано за допомогою WordPress при надсиланні даних форми. У мене була та сама проблема, і я її вирішив так.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.