欢迎光临
我们一直在努力

WordPress前台页面发送邮件的方法

由于在客户需求需要在前台页面实现发送邮件功能为此在这里记录下所使用的方法。
最简单的方法基于pape.php创建自定义页面模板,如下代码:

<?php
/*
* Template Name: Contact Page
*/

get_header();

if ( ! empty( $_POST ) ) {
$to = $_POST['subject']; //接收邮件的地址
$subject = $_POST['subject']; //这里是邮件的主题内容
$message = $_POST['subject']; //这里是邮件消息的内容,可以使用HTML标记
$headers = array('content-Type: text/html; charset=UTF-8');
wp_mail ($to,$subject,$message,$headers); 
}

?>

<div id="content">
<form action="" method="post">
<label for="fullname">Full Name</label>
<input type="text" name="fullname" id="fullname" required>
<label for="email">Email Address</label>
<input type="email" name="email" id="email" required>
<label for="subject">Subject</label>
<input type="text" id="subject" name="subject">
<label for="message">Your Message</label>
<textarea name="message" id="message"></textarea>
<input type="submit" value="Send My Message">
</form>
</div>

<?php get_footer();?>

这样是能实现想要的功能,但是从长远来看,这可能会导致以后会有麻烦,以后维护起来可能是一场噩梦,因为只有这一个地方可以进行修改,如果其他地方需要使用这个表单,则需要重新进行编写。不好直接使用。所以不推荐使用这种方法。

为了充分使用WordPress的事件处理性,我们可以使用提供的admin-post.php。转换现有的形式使其与admin-post.php兼容。要实现起来也很简单。

我们需要先将前台代码作修改:

<form action="" method="post">

改为:

<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">

修改后的代码如下:

<?php
/*
* Template Name: Contact Page
*/

get_header();
<div id="content">
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<label for="fullname">Full Name</label>
<input type="text" name="fullname" id="fullname" required>
<label for="email">Email Address</label>
<input type="email" name="email" id="email" required>
<label for="subject">Subject</label>
<input type="text" id="subject" name="subject">
<label for="message">Your Message</label>
<textarea name="message" id="message"></textarea>
<input type="submit" value="Send My Message">
</form>
</div>

<?php get_footer();?>

注意:由于我们是在WordPress钩子动作中实现POST的功能,所以我们删除了顶部的POST功能

接下来我们需要在函数中实现POST请求的处理事件。
我们表单中有自定义操作:coutact_form,因此按照权限规则,我们可以使用以下四钩子:

  • admin_post_nopriv
  • admin_post_nopriv_contact_form
  • admin_post
  • admin_post_contact_form

我们需要在functions.php添加代码

function my_send_email_to_admin() {
//这里添加你需要发送邮件的代码

if ( ! empty( $_POST ) ) {
$to = $_POST['subject']; //接收邮件的地址
$subject = $_POST['subject']; //这里是邮件的主题内容
$message = $_POST['subject']; //这里是邮件消息的内容,可以使用HTML标记
$headers = array('content-Type: text/html; charset=UTF-8');
wp_mail ($to,$subject,$message,$headers); 
}
}
add_action( 'admin_post_nopriv_contact_form', 'my_send_email_to_admin` );
add_action( 'admin_post_contact_form', 'my_send_email_to_admin` );

到此我们就可以实现在前台页面实现法邮件了。

赞(0) 打赏
文章名称:《WordPress前台页面发送邮件的方法》
文章链接:https://www.nixonli.com/23292.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
窗外天空


关注公众号『窗外天空』

获取更多资源!......

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏