我只是在创建一个简单的联系表,但我注意到它似乎发布到了无效的页面上。浏览器中的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>


评论

您的页面位于哪个URL?

如果使用WooCommerce订阅并且具有名为“订阅”的输入字段,则会出现相同的问题。我花了很长时间才弄清楚发生了什么,由于这篇文章,我设法解决了它。希望有人使用WooCommerce订阅并且遇到类似问题对您有所帮助!

#1 楼

我可能是错的,但我隐约记得:WordPress劫持了电子邮件的名称以发表评论,如果将表单元素重命名为contact-name和contact-email,是否会遇到相同的问题?

评论


是的,它是名称字段,而是像jm_name一样对其命名空间:)

– Backie
2011年3月11日13:16

谢谢汤姆! WP确实在劫持表格。真奇怪。

– Svetoslav Marinov
16年11月4日在21:30

如果有帮助,AngularJS也是如此。 ;)

–马克
18/09/13在20:36

我遇到了这个问题,这个答案将我引向了正确的道路。我没有名称或电子邮件的字段,但是输入名称之一等于自定义帖子类型(cpt),因此它触发了wp查询和404。因此我更改了字段名称,使其与cpt不同,并且它修复了问题。

–莫欣
19年5月28日在17:42

糟糕,使用输入字段名称的电子邮件无法插入数据。谢谢帮了我

–Arman H
20年7月9日在3:32



#2 楼

正如汤姆所写,这不仅是name还是email问题。即使输入字段的名称属性与我的“自定义帖子类型”之一相同,我也遇到了问题。例如:

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


在其他地方注册了CPT“电影”时,您的表单提交将以404错误结束。

结论:不要在表单中使用nameemailany registered custom post type handle作为输入名称属性值。

评论


好吧,我试图用更准确的信息回答原始问题。嗯,大概... :-)添加一些编辑。

– Marek
2014年11月18日15:38

另外,自定义分类名称也不能用作输入名称

– Marc
20 Mar 26 '13:30

是的,有很多。您可以从这里找到帮助:infinitypp.com/wordpress/…

– MD。沙法雅图·哈克(Shafayatul Haque)
20年7月29日在19:26

#3 楼

尝试将name="email"更改为name="my_theme_email"之类的东西,对您的所有字段进行相同的操作,这听起来像是在发送表单数据时WordPress保留了某些名称。我遇到了同样的问题,并像这样解决了。

#4 楼

它对我有用,只需更改您的

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


就可以了。谢谢。