導讀:WordPress 評論回覆郵件功能增加讀者回訪,對網站 pv 數量有貢獻,對於使用者體驗也是非常好的。想象一下,如果你在朱海濤自媒體部落格上做過評論...

WordPress 評論回覆郵件功能增加讀者回訪,對網站 pv 數量有貢獻,對於使用者體驗也是非常好的。想象一下,如果你在朱海濤自媒體部落格上做過評論,然後有其他讀者回復你的評論,這是你就會收到一封郵件提醒你的評論被回覆了。這個功能是不是非常貼心,對於網站經營者而言,提供這個功能也是能極好的再次吸引讀者的。我的 WordPress 主題自帶評論回覆傳送郵件提醒的功能,所以我一直沒有去測試這個功能。只到有一天,偉偉提醒我,我的部落格回覆評論功能沒有開通,我才開始重視這件事情。

評論回覆郵件效果如如下

我先來說說實現這一個功能的常規套路,這個方式需要確認你的主機支援 mail 函式。否則的話,是不起作用的。下面直接上程式碼

  1. function comment_mail_notify($comment_id) { 
  2.  $admin_email = get_bloginfo ('admin_email'); 
  3.  $comment = get_comment($comment_id); 
  4.  $comment_author_email = trim($comment->comment_author_email); 
  5.  $parent_id = $comment->comment_parent ? $comment->comment_parent : ''
  6.  $to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : ''
  7.  $spam_confirmed = $comment->comment_approved; 
  8.  if (($parent_id != '') && ($spam_confirmed != 'spam') && ($to != $admin_email)) { 
  9.  $wp_email = 'no-reply@' . preg_replace('#^www.#''', strtolower($_SERVER['SERVER_NAME'])); 
  10.  $subject = '您在 [' . get_option("blogname") . '] 的留言有了新回覆'
  11.  $message = ' 
  12.  <div style="background-color:#fff; border:1px solid #666666; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px; border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px;"
  13.  <div style="background:#666666; width:100%; height:60px; color:white; -moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0; -khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; "
  14.  <span style="height:60px; line-height:60px; margin-left:30px; font-size:12px;"> 您在<a style="text-decoration:non; color:#ff0;font-weight:600;"> [' . get_option("blogname") . '] </a> 上的留言有回覆啦!</span></div> 
  15.  <div style="width:90%; margin:0 auto"
  16.  <p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p> 
  17.  <p> 您在 《' . get_the_title($comment->comment_post_ID) . '》 的留言:<br /> 
  18.  <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim(get_comment($parent_id)->comment_content) . '</p> 
  19.  <p>' . trim($comment->comment_author) . ' 給你的回覆:<br /> 
  20.  <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim($comment->comment_content) . '</p> 
  21.  <p> 你可以點選<a href="' . htmlspecialchars(get_comment_link($parent_id, array('type' => 'comment'))) . '"> 檢視完整 
  22. 內容</a></p> 
  23.  <p> 歡迎再度光臨<a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p> 
  24.  <p>(此郵件由系統自動發出, 請勿回覆。)</p> 
  25.  </div></div>'; 
  26.  $from = "From: "" . get_option('blogname') . "" <$wp_email>"
  27.  $headers = "$from
    Content-Type: text/html; charset="
     . get_option('blog_charset') . "
    "
  28.  wp_mail( $to, $subject, $message, $headers ); 
  29.  } 
  30. add_action('comment_post''comment_mail_notify'); 

值得注意的是,朱海濤剛開始增加這個函式的時候,一直報錯,導致網站返回 500 錯誤而無法訪問。原來是我的主題中有個檔案中已經包含了這個函式。所以最好是在使用這個函式之前,使用 if (!function_exists('comment_mail_notify')) 來判斷下是否本來已經存在這個函式。

然而我的主機好像不支援上面的程式碼,應該是主機對 wp_mail 函式不支援。所以我換了另外一種方式來實現,主要原理是使用 smtp 介面來實現

  1.  
  2. add_action('phpmailer_init''mail_smtp_2'); 
  3. function mail_smtp_2( $phpmailer ) { 
  4.     $phpmailer->FromName = '朱海濤自媒體'
  5.     $phpmailer->Host = 'smtp.qq.com' 
  6.     $phpmailer->Port = 465;  
  7.     $phpmailer->Username = 'stcash@stcash.com' 
  8.     $phpmailer->Password = 'xz2015' 
  9.     $phpmailer->From = 'stcash@stcash.com' 
  10.     $phpmailer->SMTPAuth = true; 
  11.     $phpmailer->SMTPSecure = 'ssl' 
  12.     $phpmailer->IsSMTP(); 

這段程式碼在主機上是通用的。只需要修改發件人名稱, 和郵箱賬戶

附上各郵箱的埠及 smtp 地址:

188 郵箱

pop3.188.com smtp.188.com 埠:25

163 郵箱

pop3.163.com smtp.163.com 埠:25

126 郵箱

pop3.126.com smtp.126.com 埠:25

netease 郵箱

pop.netease.com smtp.netease.com 埠:25

yeah 郵箱

pop.yeah.net smtp.yeah.net 埠:25

QQ 郵箱

pop.qq.com smtp.qq.com 埠:465 或 587

嫌麻煩的站長可以直接使用後面一種方式來實現評論回覆郵件提醒了。
來源:朱海濤自媒體