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

[toggle Title=”代码太长,展开查看”]
[cc lang=”php”]

//comment_mail_notify(所有的回复都会发邮件通知)
/* 以下是判断是否发出邮件:
($spam_confirmed != ‘spam’): 不给垃圾评论发送邮件提醒,必需!!
($to != $admin_email) : 不发送邮件给站长
($comment_author_email == $admin_email) : 只有站长评论时才发送邮件提醒
isset($_POST[‘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’])) {

$wp_email = ‘你的邮箱地址’; // . preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
$subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有新回复’;
$message = ‘

‘ . trim(get_comment($parent_id)->comment_author) . ‘,您好!

您在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:

‘ . trim(get_comment($parent_id)->comment_content) . ‘

‘ . trim($comment->comment_author) . ‘给您的回复:

‘ . trim($comment->comment_content) . ‘

您可以点击查看完整的內容

欢迎再度光临 ‘ . get_option(‘blogname’) . ‘

来自’ . get_option(‘blogname’) . ‘的诚挚问候.

‘;
$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 ‘
‘;
}
add_action(‘comment_form’, ‘add_checkbox’);

[/cc]

[/toggle]

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

转载自: http://sypopo.com/pcnet/2366.html | 水缘泡泡博客

2条评论

  1. 我的用你的代码,怎么提示Parse_error: syntax error, unexpected ‘&’ in

    1. 你好,这个也是我在网上转载的,没有亲自测试。我自己用的插件。还有,可否把你遇到的错误提示粘贴下来。你的提示说“ unexpected ‘&’ in”,后面估计是行号,可以检查一下那里的代码,祝好运!

发表回复

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