今天给博客添加了评论回复邮件提醒通知功能,访客可自主选择是否开启此功能。效果如下图,方法来源于:wp大学,感谢原作者的教程。
WordPress 要想在第一时间知道有人在自己博客留言,然后在第一时间回复留言再第一时间通知邮件者,这就需要WordPress博客拥有邮件通知功能。这个功能可以使用相关插件实现,但是试用过几个评论回复邮件通知插件,但都不太满意。
操作请注意:
1.一定不要使用记事本编辑php文件,否则很可能出现意想不到的错误,推荐使用UltraEdit,Dreamweaver等。
2.如果对于修改代码不是很有把握,请预先备份好原来的文件。
3.复制本文的代码,如果是全角符号,请自行改为半角符号,切记。
评论邮件通知的方法:
1.所有回复都发送邮件通知
登陆博客后台,点击“外观”选项卡下的“编辑”选项进入主题编辑界面,在functions.php文件中的<?php和?>之间添加以下函数即可:
- /*comment_mail_notifyv1.0bywillinkan.(所有回复都发邮件)*/
- functioncomment_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=‘[emailprotected]’.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=‘
- <divstyle=“background-color:#eef2fa;border:1pxsolid#d8e3e8;color:#111;padding:015px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;”>
- <p>’.trim(get_comment($parent_id)->comment_author).‘,您好!</p>
- <p>您曾在《’.get_the_title($comment->comment_post_ID).‘》的留言:<br/>’
- .trim(get_comment($parent_id)->comment_content).‘</p>
- <p>’.trim($comment->comment_author).‘给您的回复:<br/>’
- .trim($comment->comment_content).‘<br/></p>
- <p>您可以点击查看回复完整內容</p>
- <p>欢迎再度光临‘.get_option(‘blogname’).‘</p>
- <p>(此邮件由系统自动发送,请勿回复.)</p>
- </div>’;
- $from=“From:””.get_option(‘blogname’).“”<$wp_email>”;
- $headers=“$fromnContent-Type:text/html;charset=”.get_option(‘blog_charset’).“n”;
- wp_mail($to,$subject,$message,$headers);
- //echo‘mailto‘,$to,‘<br/>‘,$subject,$message;//fortesting
- }
- }
- add_action(‘comment_post’,‘comment_mail_notify’);
- //—END—————————————-
2.让访客自己选择是否邮件通知
在functions.php文件中的<?php和?>之间添加以下函数,该函数将会在评论框底部生成要不要收回复通知的选项:
- /*开始*/
- functioncomment_mail_notify($comment_id){
- $admin_notify=‘1’;//admin要不要收回复通知(‘1’=要;‘0’=不要)
- $admin_email=get_bloginfo(‘admin_email’);//$admin_email可改为你指定的e-mail.
- $comment=get_comment($comment_id);
- $comment_author_email=trim($comment->comment_author_email);
- $parent_id=$comment->comment_parent?$comment->comment_parent:”;
- global$wpdb;
- if($wpdb->query(“Describe{$wpdb->comments}comment_mail_notify”)==”)
- $wpdb->query(“ALTERTABLE{$wpdb->comments}ADDCOLUMNcomment_mail_notifyTINYINTNOTNULLDEFAULT0;”);
- if(($comment_author_email!=$admin_email&&isset($_POST[‘comment_mail_notify’]))||($comment_author_email==$admin_email&&$admin_notify==‘1’))
- $wpdb->query(“UPDATE{$wpdb->comments}SETcomment_mail_notify=’1′WHEREcomment_ID=’$comment_id’”);
- $notify=$parent_id?get_comment($parent_id)->comment_mail_notify:‘0’;
- $spam_confirmed=$comment->comment_approved;
- if($parent_id!=”&&$spam_confirmed!=‘spam’&&$notify==‘1’){
- $wp_email=‘[emailprotected]’.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=‘
- <divstyle=“background-color:#eef2fa;border:1pxsolid#d8e3e8;color:#111;padding:015px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;”>
- <p>’.trim(get_comment($parent_id)->comment_author).‘,您好!</p>
- <p>您曾在《’.get_the_title($comment->comment_post_ID).‘》的留言:<br/>’
- .trim(get_comment($parent_id)->comment_content).‘</p>
- <p>’.trim($comment->comment_author).‘给您的回复:<br/>’
- .trim($comment->comment_content).‘<br/></p>
- <p>您可以点击查看回复的完整內容</p>
- <p>还要再度光临‘.get_option(‘blogname’).‘</p>
- <p>(此邮件由系统自动发送,请勿回复.)</p>
- </div>’;
- $from=“From:””.get_option(‘blogname’).“”<$wp_email>”;
- $headers=“$fromnContent-Type:text/html;charset=”.get_option(‘blog_charset’).“n”;
- wp_mail($to,$subject,$message,$headers);
- //echo‘mailto‘,$to,‘<br/>‘,$subject,$message;//fortesting
- }
- }
- add_action(‘comment_post’,‘comment_mail_notify’);
- /*自动加勾选栏*/
- functionadd_checkbox(){
- echo‘<inputtype=“checkbox”name=“comment_mail_notify”id=“comment_mail_notify”value=“comment_mail_notify”checked=“checked”style=“margin-left:20px;”/><labelfor=“comment_mail_notify”>有人回复时邮件通知我</label>’;
- }
- add_action(‘comment_form’,‘add_checkbox’);
3.让博客管理员决定什么情况下发邮件
在functions.php文件中的<?php和?>之间添加以下函数:
- /*comment_mail_notifyv1.0bywillinkan.(无勾选栏)*/
- functioncomment_mail_notify($comment_id){
- $admin_email=get_bloginfo(‘admin_email’);//$admin_email可改为你指定的e-mail.
- $comment=get_comment($comment_id);
- $comment_author_email=trim($comment–>comment_author_email);
- $parent_id=$comment->comment_parent?$comment->comment_parent:”;
- $to=$parent_id?trim(get_comment($parent_id)->comment_author_email):”;
- $spam_confirmed=$comment->comment_approved;
- if(($parent_id!=”)&&($spam_confirmed!=‘spam’)&&($to!=$admin_email)&&($comment_author_email==$admin_email)){
- /*上面的判断式,决定发出邮件的必要条件:
- ($parent_id!=”)&&($spam_confirmed!=‘spam’):回复的,而且不是spam才可发,必需!!
- ($to!=$admin_email):不发给admin.
- ($comment_author_email==$admin_email):只有admin的回复才可发.
- 可视个人需修改上面的条件.
- */
- $wp_email=‘[emailprotected]’.preg_replace(‘#^www.#’,”,strtolower($_SERVER[‘SERVER_NAME’]));//e-mail发出点,no-reply可改为可用的e-mail.
- $subject=‘您在[‘.get_option(“blogname”).‘]的留言有了回复’;
- $message=‘
- <divstyle=“background-color:#eef2fa;border:1pxsolid#d8e3e8;color:#111;padding:015px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;”>
- <p>’.trim(get_comment($parent_id)->comment_author).‘,您好!</p>
- <p>您曾在《’.get_the_title($comment->comment_post_ID).‘》的留言:<br/>’
- .trim(get_comment($parent_id)->comment_content).‘</p>
- <p>’.trim($comment–>comment_author).‘给您的回复:<br/>’
- .trim($comment->comment_content).‘<br/></p>
- <p>您可以点击查看回复的完整內容</p>
- <p>还要再度光临‘.get_option(‘blogname’).‘</p>
- <p>(此邮件由系统自动发送,请勿回复.)</p>
- </div>’;
- $from=“From:””.get_option(‘blogname’).“”<$wp_email>”;
- $headers=“$fromnContent-Type:text/html;charset=”.get_option(‘blog_charset’).“n”;
- wp_mail($to,$subject,$message,$headers);
- //echo‘mailto‘,$to,‘<br/>‘,$subject,$message;//fortesting
- }
- }
- add_action(‘comment_post’,‘comment_mail_notify’);
- //—END—————————————-
你可以根据需要选择代码,根据主题的不同可能要略作修改。本站使用的是第二种。