我正在尝试通过自定义页面模板提交表单,但问题是它只适用于form action="<?php the_permalink() ?>"
,我需要提交表单并重定向到这样的form action="<?php bloginfo('url')?>/message-sent?id=<?php the_ID() ?>"
完整代码:
<?php
$emailError = '';
if(isset($_POST['submitted'])) {
$email = trim($_POST['email']);
//setup self email address
$emailTo = $email;
$subject = "[reminder] Don't forget to download " . get_the_title();
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
$headers = 'From: Myemail reminders <no-reply@xyz.com>' . "\r\n";
wp_mail($emailTo, $subject, $body, $headers);
$emailSent = true;
} ?>
<section class="box grid_9 list_posts">
<div class="inner">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="entry-content">
<div class="contact-form clearfix">
<?php if(isset($emailSent) && $emailSent == true) { ?>
<div class="thanks">
<?php _e('Thanks, your email was sent successfully.', 'framework') ?>
</div>
<?php } else { ?>
<?php the_content(); ?>
<?php if(isset($hasError) || isset($captchaError)) { ?>
<p class="error"><?php _e('Sorry, an error occured.', 'framework') ?>
<?php } ?>
<form action="<?php the_permalink()?>" id="contactForm" method="post">
<ul class="contactform">
<li>
<input type="email" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" class="required requiredField email" required="required" />
</li>
<li class="buttons">
<input type="hidden" name="submitted" id="submitted" value="true" />
<input type="submit" value="Remind Me!"></input>
</li>
</ul></form>
<?php } ?></div>
</div>
</div>
<?php endwhile; else: ?>
<div id="post-0" <?php post_class() ?>>
<h1 class="entry-title"><?php _e('Error 404 - Not Found', 'framework') ?></h1>
</div>
<?php endif; ?></div>
</section>
我的日志中没有php错误,页面重定向成功,但没有发送电子邮件。使用the_permalink时,一切正常。
答案 0 :(得分:0)
也许您忘记在/message-sent?id=xxx
文件的末尾添加“ .php ”,即/message-sent.php?id=xxx
?
另一个想法:过滤用户输入总是一个好主意,因为你会收到很多垃圾邮件,放一些CAPTCHA验证码并清理/验证整个用户输入文本,即每一个文本,来自表单的输入字段。
对于电子邮件:
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
姓名和评论:
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$comments = filter_var(strip_tags($_POST['comments']), FILTER_SANITIZE_STRING);
答案 1 :(得分:0)
将表单数据提交到其他脚本时,请确保发送电子邮件的代码(验证输入和)在该文件中。
否则,您的网址/message-sent
可能会重写为完全不同的脚本,一旦点击提交按钮,就不会涉及带有上述代码的脚本。
那是你的意思吗?如果我的措辞不可理解或者我的描述不清楚,请随意询问