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
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

58 条留言

点此留言
1 2 288
  1. heasily

    测试了,无法发送呢。 我测试的邮件发送函数是正常的。。。。。$mypost这个变量是啥意思。。。

  2. Ludou

    @heasily 当文章从草稿变成已发布状态,才会发送邮件。

  3. 糗事 糗事

    draft_to_publish 这个只有在草稿变成发布,才会触发
    如果不生效的,改成
    pending_to_publish 由审核变成发布的时候触发

  4. autofly autofly

    可不可以设置发件人,默认是wordpress

  5. autofly autofly

    @autofly 怎么改发件人?或者怎么改发件人名称

  6. Ludou

    @autofly google关键字:wordpress 发件人
    自己动手丰衣足食!

  7. ilaohoo ilaohoo

    LUdou老师:

    // 其中 ludou_tougao_email 是自定义栏目的名称
    add_post_meta($status, 'ludou_tougao_email', $email, TRUE);

    这个里面,我没有自定义栏目,只有一个默认分类,我试着改成了分类名称或者是别名,都无法收到邮件。我是哪里设置错误了吗?

    第二段代码我放到了functions.php 文件的最下面。

  8. ilaohoo ilaohoo

    @ilaohoo 我已经设置了自定义栏目,名称为“ludou_tougao_email”值填写的是:email

    我在测试的时候只能收到投稿邮件,然后在后台将草稿选择发布后,投稿时留得测试邮箱无法收到投稿发表成功的邮件。

    请问我是哪里设置错误了?

  9. Ludou

    @ilaohoo “ludou_tougao_email”值填写的是:收件人的email地址

  10. ilaohoo ilaohoo

    @Ludou 是的,我在测试的时候,在后台审核文章的时候,看到的“ludou_tougao_email”值为投稿人在投稿时留得邮箱。 就是无法收到发表邮件

  11. 流沙

    技术问题;在页面的导航下面,做了一个调用不同分类标题的几个小区块,但只要一调用,内容页面就全部变成一篇文章了,也就是讲所有内容页面里面的内容全部一样了,但是如果把这个导航下面的区块,放在内容下面就一切正常了。

    烦回一下。

  12. Ludou

    @流沙 如果你使用的是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

  13. xuexi

    Ludou

    可以有三个条件发邮件吗?

    如果有投稿提示管理员, 如果发布提示用户, 删除了也会提示用户

  14. 丽人100 丽人100

    露兜老师你好,请问
    // 其中 ludou_tougao_email 是自定义栏目的名称
    add_post_meta($status, 'ludou_tougao_email', $email, TRUE);
    这个是什么意思啊,就直接你写的这个修改代码就行啊,还是需要我把ludou_tougao_email换成什么其他的东西啊?没明白此处的“自定义栏目”是指什么。
    第二段代码放到unctions.php 文件的什么位置呢?
    期待老师的解答。

  15. 露兜

    @丽人100 1、代码会自动添加,无需干预,如果需要修改,WordPress后台 – 进入文章编辑页面,右上角的显示选项,勾选自定义栏目,这样文章编辑页面底下会出现自定义栏目。
    2、放到任意一个<?php下面就可以

  16. 丽人100 丽人100

    @露兜 你好,露兜老师,我按照你的方法做了,自定义栏目的值也显示是投稿者的邮箱,但是,由草稿转到发布后投稿者还是收不到通知邮件,不知道,代码中还有哪些地方是需要自己手动更改的,我看也有很多人咨询这个问题。期待老师解答。

  17. 露兜

    @丽人100 https://www.ludou.org/why-wordpress-cant-send-mail.html

  18. 丽人100 丽人100

    @露兜 你好,我一按照你的方法测试了,我是可以收到邮件的,也就是说我的空间是支持发送邮件的。我怀疑是不是那些代码中有些是需要我自己替换的?整了好几遍了也没整好,请露兜老师指明一下,那些代码中,哪些地方是需要特别注意或者需要自己修改的。谢谢啦,期待老师解答。

  19. 露兜

    @丽人100 请确保你是在当前使用的主题的目录下的functions.php中添加的php代码,添加后形如:
    <?php
    function tougao_notify($mypost) {

    并用utf8编码另存为,替换原来的functions.php。不要用记事本修改代码!
    不懂请自行搜索:WordPress utf8 另存为

  20. 丽人100 丽人100

    非常感谢,原来是因为用文本编辑的编码,后台重新保存了各式就好用了。

1 2

发表留言