WordPress投稿功能添加邮件提醒功能
日期:
标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务: 点此联系我
上次我们讲了如何给WordPress投稿功能添加富文本编辑器,这次我们来讲讲如何实现:投稿者的投稿审核通过并发布后,自动给投稿者发一封邮件进行提醒。
一、添加一个存储投稿者邮箱的自定义栏目
打开WordPress添加投稿功能,下面我们将对这篇文章中的代码进行修改。在第二段代码以下代码:
wp_mail("somebody#example.com","My subject","content");
的下一行插入以下代码:
// 其中 ludou_tougao_email 是自定义栏目的名称
add_post_meta($status, 'ludou_tougao_email', $email, TRUE);
二、添加提醒功能php代码
在主题目录下的functions.php添加以下php代码(将以下代码中的露兜博客名称和URL改成你自己的):
function tougao_notify($mypost) {
$email = get_post_meta($mypost->ID, "ludou_tougao_email", true);
if( !empty($email) ) {
// 以下是邮件标题
$subject = '您在露兜博客的投稿已发布';
// 以下是邮件内容
$message = '
<p><strong>露兜博客</strong> 提醒您: 您投递的文章 <strong>' . $mypost->post_title . '</strong> 已发布</p>
<p>您可以点击以下链接查看具体内容:<br />
<a href="' . get_permalink( $mypost->ID ) . '">点此查看完整內容</a></p>
<p>===================================================================</p>
<p><strong>感谢您对 <a href="https://www.ludou.org" target="_blank" rel="noopener">露兜博客</a> 的关注和支持</strong></p>
<p><strong>该信件由系统自动发出, 请勿回复, 谢谢.</strong></p>';
add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
@wp_mail( $email, $subject, $message );
}
}
// 当投稿的文章从草稿状态变更到已发布时,给投稿者发提醒邮件
add_action('draft_to_publish', 'tougao_notify', 6);
以上功能需要你的服务器支持mail函数,具体可以参考这篇文章测试你的主机是否支持:为什么你的WordPress无法发送Email
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-tougao-mail.html
测试了,无法发送呢。 我测试的邮件发送函数是正常的。。。。。$mypost这个变量是啥意思。。。
@heasily 当文章从草稿变成已发布状态,才会发送邮件。
draft_to_publish 这个只有在草稿变成发布,才会触发
如果不生效的,改成
pending_to_publish 由审核变成发布的时候触发
可不可以设置发件人,默认是wordpress
@autofly 怎么改发件人?或者怎么改发件人名称
@autofly google关键字:wordpress 发件人
自己动手丰衣足食!
LUdou老师:
// 其中 ludou_tougao_email 是自定义栏目的名称
add_post_meta($status, 'ludou_tougao_email', $email, TRUE);
这个里面,我没有自定义栏目,只有一个默认分类,我试着改成了分类名称或者是别名,都无法收到邮件。我是哪里设置错误了吗?
第二段代码我放到了functions.php 文件的最下面。
@ilaohoo 我已经设置了自定义栏目,名称为“ludou_tougao_email”值填写的是:email
我在测试的时候只能收到投稿邮件,然后在后台将草稿选择发布后,投稿时留得测试邮箱无法收到投稿发表成功的邮件。
请问我是哪里设置错误了?
@ilaohoo “ludou_tougao_email”值填写的是:收件人的email地址
@Ludou 是的,我在测试的时候,在后台审核文章的时候,看到的“ludou_tougao_email”值为投稿人在投稿时留得邮箱。 就是无法收到发表邮件
技术问题;在页面的导航下面,做了一个调用不同分类标题的几个小区块,但只要一调用,内容页面就全部变成一篇文章了,也就是讲所有内容页面里面的内容全部一样了,但是如果把这个导航下面的区块,放在内容下面就一切正常了。
烦回一下。
@流沙 如果你使用的是WP_Query,请参考下面的样式,记得后面的:wp_reset_postdata();
http://codex.wordpress.org/Class_Reference/WP_Query#Usage
如果你用的是query_posts,参考下面的样式,记得后面的:wp_reset_query();
http://codex.wordpress.org/Function_Reference/query_posts#Usage
Ludou
可以有三个条件发邮件吗?
如果有投稿提示管理员, 如果发布提示用户, 删除了也会提示用户
露兜老师你好,请问
// 其中 ludou_tougao_email 是自定义栏目的名称
add_post_meta($status, 'ludou_tougao_email', $email, TRUE);
这个是什么意思啊,就直接你写的这个修改代码就行啊,还是需要我把ludou_tougao_email换成什么其他的东西啊?没明白此处的“自定义栏目”是指什么。
第二段代码放到unctions.php 文件的什么位置呢?
期待老师的解答。
@丽人100 1、代码会自动添加,无需干预,如果需要修改,WordPress后台 – 进入文章编辑页面,右上角的显示选项,勾选自定义栏目,这样文章编辑页面底下会出现自定义栏目。
2、放到任意一个<?php下面就可以
@露兜 你好,露兜老师,我按照你的方法做了,自定义栏目的值也显示是投稿者的邮箱,但是,由草稿转到发布后投稿者还是收不到通知邮件,不知道,代码中还有哪些地方是需要自己手动更改的,我看也有很多人咨询这个问题。期待老师解答。
@丽人100 https://www.ludou.org/why-wordpress-cant-send-mail.html
@露兜 你好,我一按照你的方法测试了,我是可以收到邮件的,也就是说我的空间是支持发送邮件的。我怀疑是不是那些代码中有些是需要我自己替换的?整了好几遍了也没整好,请露兜老师指明一下,那些代码中,哪些地方是需要特别注意或者需要自己修改的。谢谢啦,期待老师解答。
@丽人100 请确保你是在当前使用的主题的目录下的functions.php中添加的php代码,添加后形如:
<?php
function tougao_notify($mypost) {
…
并用utf8编码另存为,替换原来的functions.php。不要用记事本修改代码!
不懂请自行搜索:WordPress utf8 另存为
非常感谢,原来是因为用文本编辑的编码,后台重新保存了各式就好用了。