首先,须要测试你的环境支持不支持main()函数的部分。
支持没main()函数就可以直接代码操作实现回答邮件提醒。

不支持main()函数呢,wordpress须要安装smtp插件,架设配置使你能够发邮件,然后代码操作实现功能。
这点tearl刚开始还以为架设smtp就可以了。
完备是闭着眼搞。

那怎么知道你的环境支持不支持main()函数呢,这里有个方法,tearl也是找教程看到。
测试办法:在登录页故意按下“忘却密码”,收到邮件就有main()函数功能,没收到邮件,就有点失落望zz。

管理员回复留言phpWordpress评论答复邮件通知功效 Docker

tearl在localhost测试是发送邮件不了的,在上线的站点测试,他给我一种发送成功的假象,但是并没有邮件。

以是都得安装smtp。
其余,网络文章有说法,虚拟主机全部都or大多数or基本上都不支持main()函数

那下面先容安装配置smtp的要点把稳事变,这些细节我都规整出来,不然自己摸索你没把稳到,很头疼。
像我一样。

smtp在wordpress后台插件安装搜索就可以搜索安装

我用的是easy wp smtp

安装——启用——settings

然后把该填的填了。
然后tearl测试,缺点。

网上找缺点缘故原由,创造紧张是密码和端口两个问题,以QQ邮箱为例:

邮箱帐号——填写你的发件邮箱地址

SMTP做事器地址——smtp.qq.com

接下来是邮箱密码,这里就要把稳了,QQ邮箱不知何时改的政策,如果你在政策之后修正了QQ密码或者邮箱密码,那么这里所要填写的密码就该当是授权码!

作甚授权码?请进入QQ邮箱-设置-账户-POP3/IMAP/SMTP/点击开启,然后通过手机发送短信获取授权码。

有的小伙伴可能本身就没有开启POP3/IMAP/SMTP/功能,以是, 这里记得开启一下。

端口分为两种情形,如果选择SSL加密,则端口号填写:465或587。
如果选择不用SSL加密,则端口号填写25

以上,你就可以正常发送邮件了。

代码实现:

评论邮件关照的方法:

1.所有回答都发送邮件关照

上岸博客后台,点击“外不雅观”选项卡下的“编辑”选项进入主题编辑界面,在functions.php文件中的 function comment_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 = ‘no-reply@’ . 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 = ‘

‘ . 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’) . ‘

(此邮件由系统自动发送,请勿回答.)

‘;

$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 ‘mail to ‘, $to, ‘

‘ , $subject, $message; // for testing

}

}

add_action(‘comment_post’, ‘comment_mail_notify’);

// — END —————————————-

2.让访客自己选择是否邮件关照

在functions.php文件中的 function comment_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(“ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;”);

if (($comment_author_email != $admin_email && isset($_POST[‘comment_mail_notify’])) || ($comment_author_email == $admin_email && $admin_notify == ‘1’))

$wpdb->query(“UPDATE {$wpdb->comments} SET comment_mail_notify=’1′ WHERE comment_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 = ‘no-reply@’ . 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 = ‘

‘ . 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’) . ‘

(此邮件由系统自动发送,请勿回答.)

‘;

$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 ‘mail to ‘, $to, ‘

‘ , $subject, $message; // for testing

}

}

add_action(‘comment_post’, ‘comment_mail_notify’);

/ 自动加勾选栏 /

function add_checkbox() {

echo ‘有人回答时邮件关照我’;

}

add_action(‘comment_form’, ‘add_checkbox’);

3.让博客管理员决定什么情形下发邮件

在functions.php文件中的 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) && ($comment_author_email == $admin_email)) {

/ 上面的判断式,决定发出邮件的必要条件:

($parent_id != ”) && ($spam_confirmed != ‘spam’): 回答的, 而且不是 spam 才可发, 必需!!

($to != $admin_email) : 不发给 admin.

($comment_author_email == $admin_email) : 只有 admin 的回答才可发.

可视个人需修正上面的条件.

/

$wp_email = ‘no-reply@’ . 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’) . ‘

(此邮件由系统自动发送,请勿回答.)

‘;

$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 ‘mail to ‘, $to, ‘

‘ , $subject, $message; // for testing

}

}

add_action(‘comment_post’, ‘comment_mail_notify’);

// — END —————————————-

4.未试过

add_action(‘comment_post’,’CommentsReplyNotification’);

function CommentsReplyNotification($comment_id){

//取得插入评论的id

$c = get_comment($comment_id);

//取得评论的父级id

$comment_parent = $c->comment_parent;

//取得评论的内容

$c_content = $c->comment_content;

//评论者email

$c_author_email = $c->comment_author_email;

if($comment_parent != 0){

$pc = get_comment($comment_parent);

$comment_ID = $pc->comment_ID;

$comment_author = $pc->comment_author;

$comment_author_email = $pc->comment_author_email;

$comment_post_ID = $pc->comment_post_ID;

$comment_content = $pc->comment_content;

$ps = get_post($comment_post_ID);

$author_id = $ps->post_author;

$u_email = get_user_meta($author_id,’email’,true);

//判断自己的回答,如果自己参与评论,不给自己发送邮件关照

if($c_author_email == $comment_author_email || $comment_author_email == $u_email ){

return;

}

$post_title = $ps->post_title;

$link = get_permalink($comment_post_ID);

//邮件内容,可以自定义内容

$content = “尊敬的”.$comment_author.”您好,你发布于” “.$post_title.””的评论:rn”.$comment_content.”rn有了回答:rn”.$c_content.”rn点击链接回答评论:”.$link.”#comment-“.$comment_ID;

//发送邮件

wp_mail($comment_author_email,’评论回答:’.$post_title, $content);

}

}

5.评论必须经由审核才会发送关照邮件

function logcg_comment_mail_notify($comment_id, $comment_status) {

// 评论必须经由审核才会发送关照邮件

if ($comment_status !== ‘approve’ && $comment_status !== 1)

return;

$comment = get_comment($comment_id);

if ($comment->comment_parent != ‘0’) {

$parent_comment = get_comment($comment->comment_parent);

// 邮件吸收者email

$to = trim($parent_comment->comment_author_email);

// 邮件标题

$subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有了新的回答’;

// 邮件内容,自行修正,支持HTML

$message = ‘

您在 ‘ . get_option(‘blogname’) . ‘

的留言有了新回答!

‘ . $parent_comment->comment_author . ‘,您好!

您曾在 [‘ . get_option(“blogname”) . ‘] 的文章

《’ . get_the_title($comment->comment_post_ID) . ‘》 上揭橥评论:

‘ . nl2br($parent_comment->comment_content) . ‘

‘ . trim($comment->comment_author) . ‘ 给您的回答如下:

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

您也可移步 tearl.club 以查看回答的完全內容。

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

(此邮件由系统自动发出, 请勿回答。
)

‘;

$message_headers = “Content-Type: text/html; charset=””.get_option(‘blog_charset’).””n”;

// 不用给不填email的评论者和管理员发提醒邮件

if($to != ” && $to != get_bloginfo(‘admin_email’))

@wp_mail($to, $subject, $message, $message_headers);

}

}

// 编辑和管理员的回答直接发送提醒邮件,由于编辑和管理员的评论不须要审核

add_action(‘comment_post’, ‘logcg_comment_mail_notify’, 20, 2);

// 普通访客揭橥的评论,等博主审核后再发送提醒邮件

add_action(‘wp_set_comment_status’, ‘logcg_comment_mail_notify’, 20, 2);

老样子,任何的问题,请留言。
好了,根据你可以根据你利用的须要选择代码。

以上,把稳点做好了。
按流程就能像tearl一样实现wordpress评论回答邮件提醒功能了。

另感谢落格博客、wordpress大学、晓兔博客的互利网资料共享。

——踢儿l解忧杂货店