$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>
#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错误结束。
结论:不要在表单中使用
name
,email
和any 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.
就可以了。谢谢。
评论
您的页面位于哪个URL?如果使用WooCommerce订阅并且具有名为“订阅”的输入字段,则会出现相同的问题。我花了很长时间才弄清楚发生了什么,由于这篇文章,我设法解决了它。希望有人使用WooCommerce订阅并且遇到类似问题对您有所帮助!