Mengapa ketika saya mengirimkan formulir di wordpress itu memuat halaman 404 meskipun URL sudah benar

23

Saya hanya membuat formulir kontak sederhana, tetapi saya perhatikan bahwa itu sepertinya dikirim ke halaman yang tidak valid. URL di browser sudah benar tetapi judul halaman adalah "Halaman tidak ditemukan"

di bagian atas halaman

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('[email protected]', $_POST['subject'], $_POST['content']);
    $emailed = true;
}

di bawah ... 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>
JM di Tempat Kerja
sumber
2
Apa URL halaman Anda berada?
MikeSchinkel
Masalah yang sama muncul jika Anda menggunakan Langganan WooCommerce dan Anda memiliki bidang input, bernama "langganan". Butuh waktu yang cukup lama untuk mencari tahu apa yang terjadi dan saya berhasil memperbaikinya berkat posting ini. Saya harap seseorang yang menggunakan Langganan WooCommerce dan memiliki masalah yang serupa akan membantu!
Whiplash

Jawaban:

49

Saya bisa saja salah, tetapi saya samar-samar ingat bahwa: nama, email dibajak oleh WordPress untuk melakukan posting komentar, jika Anda mengganti nama elemen form menjadi nama-kontak dan email-kontak, apakah Anda mendapatkan masalah yang sama?

Tom
sumber
1
Ya itu bidang nama, namespace itu seperti jm_name sebagai gantinya :)
Backie
Terima kasih tom! WP memang membajak formulir itu. Itu aneh.
Svetoslav Marinov
Ini juga berlaku untuk AngularJS, jika itu membantu. ;)
Mark
Saya menghadapi masalah ini, jawaban ini mengarahkan saya ke jalan yang benar. Saya tidak memiliki bidang dengan nama atau email, tetapi salah satu nama input sama dengan jenis posting kustom (cpt) sehingga memicu permintaan wp dan 404. Jadi saya mengubah nama bidang untuk membuatnya berbeda dari cpt, dan itu memperbaiki isu.
Mohsin
4

Hal ini tidak hanya name atau emailmasalah, seperti Tom menulis. Saya mengalami masalah bahkan dengan bidang input dengan atribut nama sama dengan salah satu dari Jenis Posting Kustom saya. Sebagai contoh:

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

Dan ketika telah mendaftarkan "film" CPT di tempat lain, pengiriman formulir Anda akan berakhir dengan 404 kesalahan.

Kesimpulan: Jangan gunakan name, emaildan any registered custom post type handlesebagai nilai atribut nama input di formulir Anda.

Marek
sumber
Yah, saya mencoba menjawab pertanyaan asli dengan informasi yang lebih akurat. Ehm, mungkin ... :-) Menambahkan sedikit edit.
Marek
1

Coba ubah name="email"ke sesuatu seperti name="my_theme_email", lakukan hal yang sama dengan semua bidang Anda. Sepertinya beberapa nama dicadangkan dengan WordPress saat mengirim data formulir. Saya mendapat masalah yang sama dan saya memperbaikinya seperti itu.

Thierry Edou
sumber
0

Ini bekerja untuk saya, baru saja mengubah Anda

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

Itu akan berhasil. Terima kasih.

Y. Joy Ch. Singha
sumber