代码实现修改WordPress评论留言通知邮件模板样式

wordpress 默认的评论模板中是带有邮件通知的功能的,但我们使用的主题一般是开发者写的,假如不喜欢邮件模板怎么修改?下面讲一讲 WordPress 的邮件通知实现过程,想修改邮件模板也很简单。

  1. //评论回应邮件通知
  2. add_action('comment_post', '_comment_mail_notify');
  3. function _comment_mail_notify($comment_id) {
  4. $admin_notify = '1';// admin 要不要收回复通知 ( '1'=要 ; '0'=不要 )
  5. $admin_email = get_bloginfo('admin_email');// $admin_email 可改为你指定的 e-mail.
  6. $comment = get_comment($comment_id);
  7. $comment_author_email = trim($comment->comment_author_email);
  8. $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  9. global $wpdb;
  10. if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == '') {
  11. $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
  12. }
  13. if (($comment_author_email != $admin_email && isset($_POST['comment_mail_notify'])) || ($comment_author_email == $admin_email && $admin_notify == '1')) {
  14. $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
  15. }
  16. $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : '0';
  17. $spam_confirmed = $comment->comment_approved;
  18. if ($parent_id != '' && $spam_confirmed != 'spam' && $notify == '1') {
  19. $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));// e-mail 发出点, no-reply 可改为可用的 e-mail.
  20. $to = trim(get_comment($parent_id)->comment_author_email);
  21. $subject = 'Hi,您在 [' . get_option("blogname") . '] 的留言有人回复啦!';
  22. $letter = (object) array(
  23. 'author' => trim(get_comment($parent_id)->comment_author),
  24. 'post' => get_the_title($comment->comment_post_ID),
  25. 'comment' => trim(get_comment($parent_id)->comment_content),
  26. 'replyer' => trim($comment->comment_author),
  27. 'reply' => trim($comment->comment_content),
  28. 'link' => HTMLspecialchars(get_comment_link($parent_id)),
  29. 'sitename' => get_option('blogname')
  30. );
  31. $message = '
  32. <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse"><tbody><tr><td><table width="600" cellpadding="0" cellspacing="0" border="0" align="center" style="border-collapse:collapse"><tbody><tr><td><table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td width="73" align="left" valign="top" style="border-top:1px solid #d9d9d9;border-left:1px solid #d9d9d9;border-radius:5px 0 0 0"></td><td valign="top" style="border-top:1px solid #d9d9d9"><div style="font-size:14px;line-height:10px"><br><br><br><br></div><div style="font-size:18px;line-height:18px;color:#444;font-family:Microsoft Yahei">Hi, ' . $letter->author . '<br><br><br></div><div style="font-size:14px;line-height:22px;color:#444;font-weight:bold;font-family:Microsoft Yahei">您在' . $letter->sitename . '《' . $letter->post . '》的评论:</div><div style="font-size:14px;line-height:10px"><br></div><div style="font-size:14px;line-height:22px;color:#666;font-family:Microsoft Yahei">&nbsp; &nbsp;&nbsp; &nbsp; ' . $letter->comment . '</div><div style="font-size:14px;line-height:10px"><br><br></div><div style="font-size:14px;line-height:22px;color:#5DB408;font-weight:bold;font-family:Microsoft Yahei">' . $letter->replyer . ' 回复您:</div><div style="font-size:14px;line-height:10px"><br></div><div style="font-size:14px;line-height:22px;color:#666;font-family:Microsoft Yahei">&nbsp; &nbsp;&nbsp; &nbsp; ' . $letter->reply . '</div><div style="font-size:14px;line-height:10px"><br><br><br><br></div><div style="text-align:center"><a href="' . $letter->link . '" target="_blank" style="text-decoration:none;color:#fff;display:inline-block;line-height:44px;font-size:18px;background-color:#61B3E6;border-radius:3px;font-family:Microsoft Yahei">&nbsp; &nbsp;&nbsp; &nbsp;点击查看回复&nbsp; &nbsp;&nbsp; &nbsp;</a><br><br></div></td><td width="65" align="left" valign="top" style="border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;border-radius:0 5px 0 0"></td></tr><tr><td style="border-left:1px solid #d9d9d9">&nbsp;</td><td align="left" valign="top" style="color:#999"><div style="font-size:8px;line-height:14px"><br><br></div><div style="min-height:1px;font-size:1px;line-height:1px;background-color:#e0e0e0">&nbsp;</div><div style="font-size:12px;line-height:20px;width:425px;font-family:Microsoft Yahei"><br><a href="' . _hui('letter_link_1') . '" target="_blank" style="text-decoration:underline;color:#61B3E6;font-family:Microsoft Yahei" rel="noopener noreferrer">' . _hui('letter_text_1') . '</a><br><a href="' . _hui('letter_link_2') . '" target="_blank" style="text-decoration:underline;color:#61B3E6;font-family:Microsoft Yahei" rel="noopener noreferrer">' . _hui('letter_text_2') . '</a><br>此邮件由' . $letter->sitename . '系统自动发出,请勿回复!</div></td><td style="border-right:1px solid #d9d9d9">&nbsp;</td></tr><tr><td colspan="3" style="border-bottom:1px solid #d9d9d9;border-right:1px solid #d9d9d9;border-left:1px solid #d9d9d9;border-radius:0 0 5px 5px"><div style="min-height:42px;font-size:42px;line-height:42px">&nbsp;</div></td></tr></tbody></table></td></tr><tr><td><div style="min-height:42px;font-size:42px;line-height:42px">&nbsp;</div></td></tr></tbody></table></td></tr></tbody></table>';
  33. $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
  34. $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
  35. wp_mail($to, $subject, $message, $headers);
  36. //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
  37. }
  38. }
  39. //自动勾选
  40. add_action('comment_form', '_comment_add_checkbox');
  41. function _comment_add_checkbox() {
  42. echo '<label for="comment_mail_notify" class="checkbox inline hide" style="padding-top:0"><input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked"/>有人回复时邮件通知我</label>';
  43. }

上面的代码是 DUX 主题的评论邮件通知代码,如果你想修改邮件模板,只需修改 message 变量的内容即可,需要注意的是,邮件中虽然能用 HTML,但并不是所有的 HTML 都能用,这个就需要诸位自己去试了,或者百度查资料。

先说一下 wordpress 发送邮件是怎么工作的,首先是在提交评论的时候有一个 comment_mail_notify 参数,这个东西是控制是否评论邮件通知的。上面我们在自动勾选那一块代码中已经默认添加发送通知了。其原理是使用 comment_form 钩子修改评论框代码

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/80496

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

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

51建站客服微信二维码
点击这里购买