Cómo cambiar el destinatario de notificaciones por email (usuario) para nuevos comentarios

3 may 2016, 03:44:51
Vistas: 17.6K
Votos: 8

¿Cómo se cambia el usuario que recibe la notificación por email de nuevos comentarios y moderación de comentarios?

WordPress envía las notificaciones al usuario admin. Mi cliente es el editor del sitio. Quiero que las notificaciones de comentarios lleguen al usuario editor y no al admin.

¿Cómo se hace esto?

1
Comentarios

¿Te ayudó alguna de las respuestas? Si es así, por favor considera aceptar una.

Andy Macaulay-Brook Andy Macaulay-Brook
20 sept 2016 15:42:59
Todas las respuestas a la pregunta 5
0
11

Hay un excelente artículo que explica cómo enlazar con 2 filtros para esto en https://web.archive.org/web/20200216075253/http://www.sourcexpress.com/customize-wordpress-comment-notification-emails/

Para enviar tus notificaciones a un usuario específico y no al administrador del sitio, prueba esto para un usuario con 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' );

    // Retorna solo el autor del post si el autor puede modificar.
    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 );
19 may 2016 16:57:08
1

No estoy al tanto de ningún hook que pueda cambiar solo el destinatario de la notificación de comentarios... Probablemente necesitarías sobrescribir alguna función del núcleo, pero aquí hay una pequeña solución alternativa que podrías usar:

1. Desactiva la función de correo electrónico desde la configuración de comentarios de WordPress (a menos que también quieras recibir notificaciones)

2. Envíalo manualmente usando el hook de acción comment_post. Solo añade esta función a functions.php

    add_filter( 'comment_post', 'comment_notification' );

    function comment_notification( $comment_ID, $comment_approved ) {

        // Enviar correo solo cuando no está aprobado
        if( $comment_approved == 0 ) {

            $subject = 'asunto aquí';
            $message = 'mensaje aquí';

            wp_mail( 'editor.email@here.com' , $subject, $message );
        }
    }

    // Elimina la sentencia if si quieres recibir el correo incluso si no requiere moderación

`comment_post` es una acción que se activa inmediatamente después de que un comentario se inserta en la base de datos.
3 may 2016 06:10:37
Comentarios

Nunca modifiques los archivos principales del núcleo. Tus cambios se sobrescribirán con la próxima actualización de WordPress. Los filtros son lo que necesitas para hacer modificaciones.

Rick Hellewell Rick Hellewell
8 oct 2021 06:43:04
1
-1

Existe un filtro para cambiar el texto del correo electrónico de moderación de comentarios:

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 );
12 abr 2018 23:47:21
Comentarios

Esa no era la pregunta.

wickywills wickywills
11 jul 2022 10:14:04
0
-1

Si deseas enviar este correo electrónico a múltiples personas, utiliza el siguiente código en functions.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(conjunto de IDs de usuarios a quienes quieres enviar los correos)
    $users =  array( 1, 16628, 15983 );
    foreach($users as $uid){
    $user = get_user_by( 'id', $uid );
    // Retorna los correos electrónicos de los usuarios .
         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 );

28 ago 2020 15:19:09
1
-2

Una alternativa más flexible que modificar el código como en otras respuestas es:

Crear una dirección de correo electrónico específica para la cuenta de administrador del blog. Por ejemplo, site@tu-blog.dominio que sea diferente de editor@tu-blog.dominio y tecnico@tu-blog.dominio.

Opción A: Reenviar los correos de site@ tanto al editor como al administrador técnico. Puedes configurar site@ como un alias. Esto funciona si el editor está dispuesto a recibir copias de todos los correos automáticos generados por el sitio. Simplemente filtrará los correos irrelevantes o aprenderá sobre el funcionamiento del sitio. Es ideal para clientes pequeños.

Opción B: Configurar un filtro de correo para site@ que reenvíe automáticamente las alertas de comentarios al editor y todos los correos al administrador técnico. El administrador técnico puede filtrar para archivar/eliminar todas las alertas de comentarios para que no aparezcan en su bandeja de entrada. Este reenvío inicial a editor@ puede hacerse en el servidor de correo usando algo como procmail. Alternativamente, puedes hacerlo en tu cliente de correo si está activo 24/7 o incluso usar Gmail, Hotmail, etc. y crear el filtro manualmente.

3 may 2018 09:00:26
Comentarios

Me encanta un voto negativo en una respuesta de hace 2.5 años sin ningún comentario. Gracias Peter Mortensen por la edición

paulzag paulzag
29 oct 2020 05:10:48