我使用了我已经使用了一段时间的自定义窗体。表单通过PHP在同一页面上进行验证,并将结果返回给同一页面上的用户。Wordpress中的自定义窗体操作
我正在构建我的第一个WordPress网站,并且似乎对表单操作有问题。我尝试了几个路径进行此操作,但它返回到404页面,并且电子邮件无法发送。
我不确定这个表单方法是否可以在WP中工作,或者我只是一个哑巴的noob。 (我打赌后面)。
我宁愿不使用表单插件,但如果一切都失败,我可能不得不。
这里的任何帮助深表感谢
<?php
/*
Template Name:Contact Page
*/
?>
<?php
if($_POST)
{
$javascript_enabled = trim($_POST['browser_check']);
$contact_name = trim($_POST['name']);
$email = trim($_POST['email']);
$antispam = trim($_POST['AntiSpam']);
$msg = trim($_POST['msg']);
//mail settings
$enquiry_address = "[email protected]";
$headers = "From: ".$email;
$message = "Contact name: $contact_name\nContact Email: $email\nMessage: $msg";
$to = $enquiry_address;
$antispam_answer = "35";
if ($name == "")
{
$result = "Please enter your NAME";
}
elseif (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email))
{
$result = "Enter a valid EMAIL address";
}
elseif($antispam <> $antispam_answer) {
$result = "The Anti-Spam answer is not correct.";
}
elseif (strlen($msg) < 10)
{
$result = "Message must be more than 10 characters";
}
else
{
mail($to, $subject, $message, $headers);
if($selfcopy == "yes")
mail($email, $subject, $message, $headers);
$result = "Your mail has been sent succesfully! Thanks for your enquiry";
}
}
if($javascript_enabled == "true") {
echo $result;
die();
}
?>
<?php get_header(); ?>
<div class="content">
<div class="row">
<div id="map"></div>
</div>
<div class="main2">
<div class="row narrow clearfix">
<div class="half">
<form name="contactform" id="form" method="post" action="" class="clearfix">
<div id="result"><?php if($result) echo "<div class='message'>".$result."</div>"; ?></div>
<input type="text" class="text" placeholder="CONTACT NAME *" required name="name" value="<?php echo $contact_name; ?>" />
<input type="email" class="text" placeholder="CONTACT EMAIL ADDRESS *" required name="email" value="<?php echo $email; ?>" />
<input type="text" name="AntiSpam" class="text" maxlength="2" required placeholder="ANTISPAM - WHAT IS 20 + 15 ? *" />
<textarea class="textarea" name="msg" placeholder="YOUR MESSAGE *" required value="<?php echo $msg; ?>" ></textarea>
<input type="submit" name="submit" value="SEND" id="submit"/>
</form>
<script type="text/javascript">
document.contactform.browser_check.value = "true"; //sets the hidden input(browser_check) value as true if the javascript is enabled.
$("#submit").click(function(){
$('#result').html('<img src="_images/loading.gif" class="loading-img" alt="loader image">').fadeIn();
var input_data = $('#form').serialize();
$.ajax({
type: "POST",
url: "<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>",
data: input_data,
success: function(msg){
$('.loading-img').remove(); //Removing the loader image because the validation is finished
$('<div class="message">').html(msg).appendTo('div#result').hide().fadeIn('slow'); //Appending the output of the php validation in the html div
}
});
return false;
});
</script>
</div><!--/half-->
<div class="half last">
</div><!--/half-->
</div><!--/row-->
</div><!--/main-->
</div><!--/content-->
<?php get_footer(); ?>
感谢您的回复。我已经尝试过了。它返回到联系页面的url,但显示404。我在测试网站上设置了类似的操作。你可以在mondoloco.esksidedesign.co.uk看到它。我一直在尝试我在这里和其他网站找到的所有种类,但都没有运气。 – Kev
你的答案是谢谢你的答案。我曾经使用过这种方法,但是我意识到我在其他地方有一个问题。似乎wordpress不喜欢字段名称被命名为某些东西。再次感谢 – Kev
ok.Yes也在输入字段名称中发布。请避免字段名称,如“email”,“name”等。 –