如何更改新评论的电子邮件通知收件人(用户)?

时间:2016-05-03 作者:user93385

如何更改接收新评论和评论审核通知电子邮件公告的用户?

WordPress将通知发送给管理员。我的客户是该网站的编辑。我希望将评论通知邮寄给编辑器用户,而不是管理员用户。

你是怎么做到的?

5 个回复
SO网友:Andy Macaulay-Brook

有一篇很棒的文章解释了如何在https://web.archive.org/web/20200216075253/http://www.sourcexpress.com/customize-wordpress-comment-notification-emails/

要将通知发送给特定用户而不是站点管理员,请对ID为123的用户尝试以下操作:

function se_comment_moderation_recipients( $emails, $comment_id ) {
    $comment = get_comment( $comment_id );
    $post = get_post( $comment->comment_post_ID );
    $user = get_user_by( \'id\', \'123\' );

    // Return only the post author if the author can modify.
    if ( user_can( $user->ID, \'edit_published_posts\' ) && ! empty( $user->user_email ) ) {
        $emails = array( $user->user_email );
    }

    return $emails;
}
add_filter( \'comment_moderation_recipients\', \'se_comment_moderation_recipients\', 11, 2 );
add_filter( \'comment_notification_recipients\', \'se_comment_moderation_recipients\', 11, 2 );

SO网友:N00b

我不知道有什么钩子可以只更改注释通知收件人。。。您可能需要覆盖某种核心函数,但这里有一个您可以使用的小解决方法:

1. 从WordPress评论设置中禁用电子邮件功能(,除非您也希望得到通知)

2. 使用手动发送comment_post 行动挂钩。只需将此函数添加到functions.php

    add_filter( \'comment_post\', \'comment_notification\' );

    function comment_notification( $comment_ID, $comment_approved ) {

        // Send email only when it\'s not approved
        if( $comment_approved == 0 ) {

            $subject = \'subject here\';
            $message = \'message here\';

            wp_mail( \'[email protected]\' , $subject, $message );
        }
    }

    // Remove if statement if you want to recive email even if it doesn\'t require moderation

`comment_post` is an action triggered immediately after a comment is inserted into the database.

SO网友:Ric Johnson

有一个过滤器可用于更改评论审核电子邮件的文本:

function change_comment_email( $body, $comment_id ) {
    $body = preg_replace( "/(A new )comment/s",  "$1review", $body );
    $body = preg_replace( "/(Currently \\d+ )comment/s",  "$1review", $body );
    $body = preg_replace( "/Comment:/",  "Review:", $body );
    return $body;
}

add_filter( \'comment_moderation_text\', \'change_comment_email\', 20, 2 );
add_filter( \'comment_notification_text\', \'change_comment_email\', 20, 2 );

SO网友:paulzag

在其他答案中,针对代码黑客的另一种更灵活的方法是:

为博客的管理员帐户创建电子邮件地址。例如,site@your-博客。tld不同于editor@your-博客。tld和technical@your-博客。tld

选项A:将网站@电子邮件转发给编辑和技术管理员。我将site@创建为别名。如果您的编辑器可以接收该站点生成的所有自动电子邮件的副本,则此功能可以正常工作。他们只是过滤掉不相关的电子邮件,或者了解网站的实际情况。这对小客户有好处。

选项B:为site@设置邮件过滤器,自动将有关评论警报的电子邮件转发给编辑器,并将所有电子邮件转发给技术管理员。然后,技术管理员可以过滤以存档/删除所有评论警报,这样它们就不会出现在收件箱中。可以在邮件服务器上使用以下操作完成向编辑器@的初始转发procmail. 或者,如果你的电子邮件客户端每天24小时都在运行,你也可以使用Gmail,Hotmail, 等等,并手动构建过滤器。

SO网友:amitdutt24

如果你想将此电子邮件发送给多人,请在函数中使用以下代码。php-

function se_comment_moderation_recipients( $emails, $comment_id ) {

    $comment = get_comment( $comment_id );
    $post = get_post( $comment->comment_post_ID );
    $emails = array();
   // $users =  array(set of user IDs t whome you want to send mails)
    $users =  array( 1, 16628, 15983 );
    foreach($users as $uid){
    $user = get_user_by( \'id\', $uid );
    // Return emails of users .
         if ( !empty( $user->user_email ) ) {
           $emails[] =  $user->user_email;
        }
    }
    $emails_list = array(implode(",",$emails));
     return $emails_list;

}
add_filter( \'comment_moderation_recipients\', \'se_comment_moderation_recipients\', 11, 2 );
add_filter( \'comment_notification_recipients\', \'se_comment_moderation_recipients\', 11, 2 );