以前评论回复邮件提醒通知功能是通过“Comment Reply Notification”插件来实现的,今天查看大发主题代码时发现以下代码,把以下代码直接插入主题function.php文件既可,简单明了,并且显示样版还不错。看到是由大神willin kan贡献的,可惜他老人家不玩WordPress了,于是公布此段代码给大家。
具体邮件提醒通知效果如下:
// comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件)
function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '你在 [' . get_option("blogname") . '] 的留言有了新回复';
$message = '
<div id="newsletter" style="background: none repeat scroll 0 0 #F1F8FD; color: #333333; font: 13px/20px "Helvetica Neue",Helvetica,Arial,Sans-serif;font-family:"Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif!important;">
<div class="wrapper" style="margin: 20px auto 0; width: 500px; padding-top:16px; padding-bottom:10px;">
<div class="header clearfix">
<a class="logo" style="float:left">
<img src="'.get_template_directory_uri().'/img/logo.png">
</a>
</div>
<br style="clear:both; height:0">
<div class="content" style="background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #E9E9E9; margin: 2px 0 0; padding: 30px;">
<p><strong>' . trim(get_comment($parent_id)->comment_author) . ', 你好!</strong></p>
<p class="message" style="border-top: 1px solid #DDDDDD;margin: 15px 0 15px;padding: 15px;"><strong>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言为:</strong><br />'
. trim(get_comment($parent_id)->comment_content) . '</p>
<p class="message" style="border-top: 1px solid #DDDDDD;margin: 15px 0 15px;padding: 15px;"><strong>' . trim($comment->comment_author) . ' 给你的回复是:</strong><br />'
. trim($comment->comment_content) . '<br /></p>
<p class="footer" style="border-top: 1px solid #DDDDDD; padding-top:6px; margin-top:15px; color:#838383;">你可以点击此链接 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看完整内容</a> | 欢迎再次来访<a href="' . home_url() . '">' . get_option('blogname') . '</a></p>
</div></div></div>';
$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
wp_mail( $to, $subject, $message, $headers );
}
}
add_action('comment_post', 'comment_mail_notify');
提醒,以上代码logo.png路径请根据真实修改。
更新(2014-06-26): 更新邮件内容样式,具体效果请看下图。
更新后的完整代码如下,使用方法上面一样的:
// comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件)
function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '你在 [' . get_option("blogname") . '] 的留言有了新回复';
$message = '
<div align="center" style="PADDING-BOTTOM: 66px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #777; PADDING-TOP: 66px">
<div style="TEXT-ALIGN: left; BACKGROUND-COLOR: #fff; WIDTH: 700px">
<h1 style="TEXT-ALIGN: center; PADDING-BOTTOM: 54px; MARGIN: 0px auto; MIN-HEIGHT: 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 56px">
<img src="'.get_template_directory_uri().'/img/logo.png">
</h1>
<div style="BACKGROUND-COLOR: #444; MARGIN: 0px 60px 30px; WIDTH: 580px; HEIGHT: 4px"></div>
<h2 style="LINE-HEIGHT: 50px; MARGIN: 0px 60px 30px; WIDTH: 580px; COLOR: #24b0cf; FONT-SIZE: 28px; FONT-WEIGHT: bold">
<p class="MsoNormal" align="center" style="TEXT-ALIGN: center">
<b>
<span style="FONT-FAMILY: 微软雅黑; FONT-SIZE: 15pt">
<font size="5">
<font color="black">'.$subject.'
</font>
</font>
</span>
</b>
</p>
</h2>
<div style="BACKGROUND-COLOR: #444; MARGIN: 0px 60px 40px; WIDTH: 580px; HEIGHT: 1px"></div>
<div style="MARGIN: 0px 60px 30px; WIDTH: 580px;">
<p><strong>' . trim(get_comment($parent_id)->comment_author) . ', 你好!</strong></p>
<p class="message"><strong>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言为:</strong><br />'
. trim(get_comment($parent_id)->comment_content) . '</p>
<p><strong>' . trim($comment->comment_author) . ' 给你的回复是:</strong><br />'
. trim($comment->comment_content) . '<br /></p>
<p>你可以点击此链接 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看完整内容</a> | 欢迎再次来访<a href="' . home_url() . '">' . get_option('blogname') . '</a></p></div><div style="BORDER-BOTTOM: #a5a5a5 2px dashed; MARGIN: 40px auto 30px; WIDTH: 700px"></div><table style="PADDING-BOTTOM: 30px; MARGIN: 0px 60px 30px; PADDING-LEFT: 0px; WIDTH: 580px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">
<tbody>
<tr><td style="WIDTH: 500px">
<p><span style="PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #24b0cf; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 2px">QQ:1556178</span></p>
<p style="LINE-HEIGHT: 20px; MARGIN: 0px; COLOR: #999; FONT-SIZE: 12px">©' . get_option('blogname') . ' 2014</p>
<p style="LINE-HEIGHT: 20px; MARGIN: 0px; COLOR: #999; FONT-SIZE: 12px">' . get_bloginfo( 'description' ) .'</p>
<br>
</td></tr>
</tbody>
</table></div>
</div>';
这个方法不错,我也用上了。感谢。
感谢willin kan和大发吧,我只是转发而已。嘻嘻,该功能确实不错。
大路那个评论楼层够5个回复,无法再评论,所以在这里回你吧。
每一个主题的function.php的文件里面代码不同,而文章中的代码一般需要放在
< ?php ...?>
之间。所以我提醒他放在function.php文件中代码最后的?>前面,如果你放到最后也没有问题那就保留可以了。
直接问发哥不就好了,那家伙很热心的。
大发他最近可能在忙着呢,在群里呼叫了几次没看到有回复。
他最近在学做饭烧菜,明显居家过日子的节奏了。
嗯,大发很热心! 要不要加入雷锋群啊~ 50698844
已加入了。谢谢。
你不是买过他的主题么,那里面应该有,可能名字不同。在他的仿 ifanr 主题中是这个函数:
//评论显示回调
function devecomment($comment, $args, $depth)
在 2012 中貌似可以用这个作为回调,具体没研究过:
function twentytwelve_comment
请帮忙看看在twentytwelve具体如何修改,谢谢。
发哥那段代码里面就是 twentytwelve 的评论显示吧。评论回调貌似就是把
<li id="li-comment-">
这一段显示评论内容显示的东西用函数来调用。
原来发哥那个代码是不支持子主题的,之所不行,是因为JS放错了地方,必须放到母主题twentytwelve目录里面。
评论回调是什么意思?
我弄不懂这个问题,一直想Ajax 评论提交。
我试用一下,我早都不想用多说了
老佐啊,为何没有收到回复?
因为我没有回复你呀。你看有没有收到回复。
不是,我知道你这里是有回复的,但是我添加了那段代码后,评论也没有收到回复。这是何解??
要加在使用主题的function.php文件代码“?>”之前哟。加对地方了吗?
可以了,thank you。哈哈哈
我是加在最后,也起作用了呀,在那个文件最后也没有找到 ?> 啊。你说的什么意思?
现在更新了邮件提醒内容格式,更加美观了,建议更新。
我加了之后,就打不开网页了。
1、相应代码加在?>之前;2、如果之前有该功能插件的请禁用;剩下的就具体问题具体分析了,打开WordPress调试模式,看具体什么地方出错。
大发的Oc应该怎样加啊?我加functions.php的?>的前面,500内部服务器错误啊!
他的主题已带有该功能了,不能直接放在functions.php文件里。而是修改主题文件:include/base.php中的:
这段代码。
嗯,弄好了,谢谢。
为什么这代码我用不了….放 function.php 里面之后,博客就无法打卡了。
原来如此,就觉得你家的通知邮件格式更美观啊。
这个为何放到我的网站就会报错呢??奇怪…请老佐帮忙看看?
请问,只有管理员邮箱才能收到评论提醒邮件是怎么回事啊?
不会的,你可以用一些陌生帐号测试。你回复任何人的评论,对方应该收到邮件提醒才对。
是啊,是真的变成这样,各种邮箱各种代码,测试每一次成功的,主机是支持mail函数啊,自己写个用php都可以发出去,审核评论的通知就可以收到。纠结啊,搞了几天了。
那有两种可能:插件冲突,评论后台设置。
换一个其它官方主题,关闭所有的插件只开评论通知试试。
插件就是用了两个一个是防垃圾的ask,还一个是百度sitemap插件。没其他了,而且主题就是wordpress4.1自带的主题啊。醉了。
新的邮件样式很不错~
欢迎你的到来,喜欢的话那也用于你的博客吧。
收藏了 准备用上这个邮件回复通知的功能
这个功能确实不错,就如你收到我的留言邮件提醒那样。
好,确实好,加上去
你现在用的邮件通知就是这个模板吧?你的代码高亮左边框好看,像信封的边框,把它做成邮件内容的外边框,应该很拉轰。
现在用的就是这个邮件通知的模板,我不想再折腾了,你折腾试试,到时共享一下代码。
第二个更新后的代码用了反而有问题,Dreamweaver里报错,不过用了第一段代码回复反而变慢了。
我现在想还需不需要这个功能。这个代码应该不会在问题,我现在都在用。会不会与你现在的主题有冲突?
还是决定用你这里的第二种样式