ทำไมเมื่อฉันส่งแบบฟอร์มใน 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 ถูกหักหลังฟอร์มอย่างแน่นอน มันแปลกมาก
Svetoslav Marinov

สิ่งนี้เป็นจริงสำหรับ AngularJS ในกรณีที่ช่วยได้ ;)
ทำเครื่องหมาย

ฉันประสบปัญหานี้คำตอบนี้ชี้นำฉันไปสู่เส้นทางที่ถูกต้อง ฉันไม่มีฟิลด์ที่มีชื่อหรืออีเมล แต่ชื่ออินพุตหนึ่งชื่อเท่ากับประเภทโพสต์ที่กำหนดเอง (cpt) ดังนั้นจึงเป็นการเรียกใช้คิวรี wp และ 404 ดังนั้นฉันจึงเปลี่ยนชื่อฟิลด์เพื่อให้แตกต่างจาก cpt และแก้ไข ปัญหา.
Mohsin

4

มันไม่ใช่แค่ปัญหาname หรือemailอย่างที่ทอมเขียน ฉันมีปัญหาแม้กับฟิลด์อินพุตที่มีชื่อแอตทริบิวต์เหมือนกับหนึ่งในประเภทโพสต์ที่กำหนดเองของฉัน ตัวอย่างเช่น:

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

และเมื่อมีการลงทะเบียน "ภาพยนตร์" CPT ที่อื่นการส่งแบบฟอร์มของคุณจะจบลงด้วยข้อผิดพลาด 404

สรุป: ไม่ได้ใช้name, emailและany registered custom post type handleเป็นค่าชื่อแอตทริบิวต์การป้อนข้อมูลในรูปแบบของคุณ


ฉันพยายามตอบคำถามต้นฉบับด้วยข้อมูลที่ถูกต้องมากขึ้น เอ๊ะน่าจะเป็น ... :-) กำลังเพิ่มการแก้ไขเล็กน้อย
Marek

1

ลองเปลี่ยนname="email"เป็นสิ่งที่ชอบname="my_theme_email"ทำแบบเดียวกันกับทุกฟิลด์ของคุณดูเหมือนว่าบางชื่อจะถูกสงวนไว้กับ WordPress เมื่อส่งข้อมูลแบบฟอร์ม ฉันได้รับปัญหาเดียวกันและฉันแก้ไขมันแบบนั้น


0

มันใช้งานได้สำหรับฉันแค่เปลี่ยนของคุณ

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

มันจะทำงาน. ขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.