代码实现WordPress评论回复邮件提醒通知功能–更新样式

以前评论回复邮件提醒通知功能是通过“Comment Reply Notification”插件来实现的,今天查看大发主题代码时发现以下代码,把以下代码直接插入主题function.php文件既可,简单明了,并且显示样版还不错。看到是由大神willin kan贡献的,可惜他老人家不玩WordPress了,于是公布此段代码给大家。

具体邮件提醒通知效果如下:

20140623225258

// 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): 更新邮件内容样式,具体效果请看下图。

20140626224917

更新后的完整代码如下,使用方法上面一样的:

// 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>';

代码实现WordPress评论回复邮件提醒通知功能–更新样式》有45个想法

    1. 佐仔 文章作者

      我现在想还需不需要这个功能。这个代码应该不会在问题,我现在都在用。会不会与你现在的主题有冲突?

      回复
      1. 酷特尔

        是啊,是真的变成这样,各种邮箱各种代码,测试每一次成功的,主机是支持mail函数啊,自己写个用php都可以发出去,审核评论的通知就可以收到。纠结啊,搞了几天了。

        回复
    1. 佐仔 文章作者

      他的主题已带有该功能了,不能直接放在functions.php文件里。而是修改主题文件:include/base.php中的:

      // comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件)
      …..
      add_action(‘comment_post’, ‘comment_mail_notify’);

      这段代码。

      回复
            1. 佐仔 文章作者

              1、相应代码加在?>之前;2、如果之前有该功能插件的请禁用;剩下的就具体问题具体分析了,打开WordPress调试模式,看具体什么地方出错。

  1. maie

    你不是买过他的主题么,那里面应该有,可能名字不同。在他的仿 ifanr 主题中是这个函数:

    //评论显示回调
    function devecomment($comment, $args, $depth)

    在 2012 中貌似可以用这个作为回调,具体没研究过:
    function twentytwelve_comment

    回复
      1. maie

        发哥那段代码里面就是 twentytwelve 的评论显示吧。评论回调貌似就是把
        <li id="li-comment-">
        这一段显示评论内容显示的东西用函数来调用。

        回复
        1. 佐仔 文章作者

          原来发哥那个代码是不支持子主题的,之所不行,是因为JS放错了地方,必须放到母主题twentytwelve目录里面。

          回复
    1. 佐仔 文章作者

      大路那个评论楼层够5个回复,无法再评论,所以在这里回你吧。
      每一个主题的function.php的文件里面代码不同,而文章中的代码一般需要放在< ?php ...?>之间。
      所以我提醒他放在function.php文件中代码最后的?>前面,如果你放到最后也没有问题那就保留可以了。

      回复

回复 佐仔 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注