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('example@example.com', $_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>

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?


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.


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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.