我正在尝试在我的wordpress博客上集成“订阅新闻稿”功能
用户只需输入自己的姓名和电子邮件地址,点击订阅即可。这应该会给我发送一封电子邮件,我会将它们添加到邮件列表中。
我激活了WP SMTP邮件插件,并输入了相关的电子邮件服务器信息,以使WordPress能够发送电子邮件,要求WordPress向我发送一条测试消息,这起到了作用。
现在,每当有人填写姓名时,我都想收到一封电子邮件&;发送电子邮件并点击订阅。
如果我现在这样做,它什么也不做,它会重新加载页面而不发送电子邮件。
我在下面附上了我的代码,有人能帮我吗?
注册表单的代码sidebar.php
- 这不是插件。
<form action="newsletter_signup.php" method="post">
<p><input class="full" type="text" name="name" placeholder="Your name*"></p>
<p><input class="full" type="email" name="Email" placeholder="Your email address*"></p>
<p><input type="submit" class="sub-btn" value="Subscribe"></p>
</form>
中的代码
newsletter_signup.php
文件:
<?php
require_once(\'wp-load.php\');
$name = $_POST[\'name\'];
$Email = $_POST[\'Email\'];
$to = \'[email protected]\';
wp_mail($to, $name, \'From: \' . $Email);
echo \'Your request Has Been Sent, Thank You. \';
?>
SO网友:butlerblog
以下是对您的问题的一种过于简单的方法。它并没有涵盖所有的可能性,但它确实让事情开始了。
这是一个条件语句,可以放在表单的位置。您没有明确指出如何将表单放入其中,因此这假设您可以从该位置运行PHP。如果它是一个文本小部件,那么您可能需要做一些稍微不同的事情,但核心概念是相同的。
因此,您有两种显示状态—一种是表单已提交,另一种是表单未提交。如果不是,那么很明显,您正在显示表单。但是,如果表单已经提交,那么您正在处理该数据,发送消息,并显示一条成功消息。
<?php
// Check if the form was submitted.
$formsubmit = ( isset( $_POST[\'formsubmit\'] ) ) ? true : false;
if ( $formsubmit ) {
// If the form was submitted, process the email and
// display success message.
// Get the form values (don\'t forget to sanitize).
$name = sanitize_text_field( $_POST[\'name\'] );
$email = sanitize_email( $_POST[\'email\'] );
// Who is the message being delivered to?
$to = \'[email protected]\';
// Message subject and body:
$subject = "Web form signup";
$message = "The following signup was submitted: \\r\\n";
$message .= "Name: " . $name . "\\r\\n";
$message .= "Email: " . $email;
// Send the message.
wp_mail( $to, $subject, $message );
// Display the success message.
echo \'<p>Your request Has Been Sent, Thank You.</p>\';
} else {
// If the form was not submitted, display the form. ?>
<form action="newsletter_signup.php" method="post">
<p><input class="full" type="text" name="name" placeholder="Your name*"></p>
<p><input class="full" type="email" name="email" placeholder="Your email address*"></p>
<p><input type="submit" class="sub-btn" value="Subscribe"></p>
<input type="hidden" name="formsubmit" value="1" />
</form>
<?php } ?>
这不是一个“终成眷属”的解决方案。这其中有很多分支,也有不同的方法。我的目标是给出一个简单可行的起点,解决大多数人忘记清理表单输入的事实,并纠正
wp_mail()
这在原来的问题中是不正确的。
从这里开始,还有其他可能性。其中之一是将处理程序和显示分解为单独的进程,以便根据是否提交表单来显示HTML(即通过快捷码),并且可以在单独的函数中处理所有PHP。为此,您需要将这些元素放在与某些过滤器和/或操作挂钩的函数中。