0%

WordPress for 新浪SAE 免插件实现评论邮件提醒

评论邮件回复
新浪SAE可以比较好的运行wordpress,但是由于它不同于一般主机,功能上有些限制,比如不能在wordpress后台直接修改主题代码,不支持wordpress默认的邮件函数,而,官方给出的解释都是出于安全原因。
对于在线修改wordpress主题及其他代码,可以登录SAE后进入相关应用打开代码管理,即可在线修改所有的代码。对于邮件功能,wordpress for SAE 里有一个WP-Mail-SMTP插件,但是其功能差强人意,并不能实现评论邮件提醒访客,只能提醒站长。之前评论用了一段时间的多说,结果多说经常挂掉,所以又改回自带的评论框,所以折腾了下让Wordpress for SAE添加邮件评论提醒功能。
在主题的function.php最后面加入下面的代码

//comment_mail_notify(所有的回复都会发邮件通知) 
  function comment_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)&&isset($_POST['comment_mail_notify'])) { 
  /* 上面是判断是否发出邮件: 
  ($spam_confirmed != 'spam'): 不给垃圾评论发送邮件提醒,必需!! 
  ($to != $admin_email) : 不发送邮件给站长 
  ($comment_author_email == $admin_email) : 只有站长评论时才发送邮件提醒 
  isset($_POST['comment_mail_notify']) :接收邮件提醒的复选框被选中则发送邮件 
  以上可视个人情况修改 
  */ 
  $wp_email = '你的邮箱地址';// . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 發出點, no-reply 可改為可用的 e-mail. 
  $subject = '您在[' . get_option("blogname") . ']的留言有新回复'; 
  $message = ' 
  <div style="margin: 1em 40px 1em 40px;background-color:#eef2fa;border:1px solid #d8e3e8;color:#111;padding: 0 15px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;"> 
  <p>' . trim(get_comment($parent_id)->comment_author) . ',您好!</p> 
  <p>您在<strong>《' . get_the_title($comment->comment_post_ID) . '》</strong>的留言:</p> 
  <p> ' . trim(get_comment($parent_id)->comment_content) . '</p> 
  <p><strong>' . trim($comment->comment_author) . '</strong>给您的回复:</p> 
  <p> ' . trim($comment->comment_content) . '</p> 
  <p>您可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看完整的內容</a></p> 
  <p>欢迎再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p> 
  <p>来自' . get_option('blogname') . '的诚挚问候.</p></div> 
  '; 
  $mail = new SaeMail(); 
  $options = array("from"=>$wp_email, "to"=>$to, "smtp_host"=>'邮箱的smtp服务器地址',"smtp_username"=>'你的邮箱地址',"smtp_password"=>'邮箱密码',"subject"=>$subject,"content"=>$message,"content_type"=>'HTML'); 
  $ret=false; 
  if($mail->setOpt($options)) 
  $ret=$mail->send(); 
  //发送失败时输出错误码和错误信息 
  if ($ret === false) 
  var_dump($mail->errno(), $mail->errmsg()); 
  } 
  } 
  add_action('comment_post', 'comment_mail_notify'); 
  // -- END ---------------------------------------- 
  //在评论框下面添加一个复选框,由访客决定是否接收邮件提醒,默认选中 
  function add_checkbox() { 
  echo ' 
  <input id="comment_mail_notify" style="margin-left: 20px;" type="checkbox" name="comment_mail_notify" value="comment_mail_notify" checked="true" /><label for="comment_mail_notify">邮件通知对方</label>'; 
  } 
  add_action('comment_form', 'add_checkbox');

1、需要修改的地方有四处,“你的邮箱地址 ”(两处必须一致),“邮箱的smtp服务器地址”(需邮箱支持smtp,并已启用,smtp地址形如smtp.qq.com)和“邮箱密码”
2、如果想去掉复选框,可以删除最后七行代码,然后去掉以上代码第八行中的“&&isset($_POST[‘comment_mail_notify’])”