由于在客户需求需要在前台页面实现发送邮件功能为此在这里记录下所使用的方法。
最简单的方法基于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` );
到此我们就可以实现在前台页面实现法邮件了。
![窗外天空](https://www.nixonli.com/wp-content/plugins/my-plugin/img/qrcode.png)
关注公众号『窗外天空』
获取更多建站运营运维新知!互联网创业、前沿技术......
最新评论
想要aarch64_generic架构的,用的是Rockchip RK3308 ARMv8 Cortex-A35
水淀粉vdfv
有其他下载方式么,网站上的点击下载后没有任何反应,或者直接发给我一下?[email protected]
你好,我的型号ELECOM WRC-X3200GST3,ARMv8 Processor rev 4构架,CPU mediatek/mt7622,找了很久没有找到
我的也是这样。一直无法确认ARCH架构,或是不支持。一直没办法用。不知道怎么办了