Cómo cambiar el destinatario de notificaciones por email (usuario) para nuevos comentarios
¿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?
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 );

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.

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 );

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 );

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.
