Cum să schimbi destinatarul notificărilor prin email pentru comentarii noi?
Cum poți schimba utilizatorul care primește notificările prin email pentru comentarii noi și moderare?
WordPress trimite notificările către utilizatorul admin. Clientul meu este editorul site-ului. Doresc ca notificările pentru comentarii să fie trimise către utilizatorul editor și nu către admin.
Cum se poate realiza acest lucru?

Există un articol excelent care explică cum să folosești două filtre pentru aceasta la https://web.archive.org/web/20200216075253/http://www.sourcexpress.com/customize-wordpress-comment-notification-emails/
Pentru a trimite notificările către un anumit utilizator și nu către administratorul site-ului, încearcă acest cod pentru un utilizator cu ID-ul 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' );
// Returnează doar autorul postării dacă acesta poate modifica.
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 );

Nu sunt conștient de vreun hook care să poată schimba doar destinatarul notificării pentru comentarii... Probabil că ar trebui să suprascrii o funcție din nucleu, dar iată o mică soluție alternativă pe care ai putea să o folosești:
1. Dezactivează funcția de notificare prin email din setările WordPress pentru comentarii (dacă nu dorești să primești și tu notificări)
2. Trimite manual notificarea folosind action hook-ul comment_post
. Adaugă această funcție în functions.php
add_filter( 'comment_post', 'comment_notification' );
function comment_notification( $comment_ID, $comment_approved ) {
// Trimite email doar când comentariul nu este aprobat
if( $comment_approved == 0 ) {
$subject = 'subiectul aici';
$message = 'mesajul aici';
wp_mail( 'editor.email@aici.com' , $subject, $message );
}
}
// Elimină condiția if dacă dorești să primești email chiar dacă comentariul nu necesită moderare
`comment_post` este un action declanșat imediat după ce un comentariu este introdus în baza de date.

Există un filtru pentru modificarea textului din e-mailul de moderare a comentariilor:
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 );

Dacă doriți să trimiteți acest email mai multor persoane, utilizați codul de mai jos în 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(set de ID-uri de utilizatori cărora doriți să le trimiteți emailuri)
$users = array( 1, 16628, 15983 );
foreach($users as $uid){
$user = get_user_by( 'id', $uid );
// Returnează emailurile utilizatorilor .
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 );

O alternativă mai flexibilă la manipularea codului prezentată în celelalte răspunsuri este:
Crează o adresă de email pentru contul de administrator al blogului. De exemplu, site@blogul-tau.tld care să fie diferită de editor@blogul-tau.tld și technical@blogul-tau.tld.
Opțiunea A: Redirecționează emailurile de la site@ către atât editor cât și administratorul tehnic. Poți crea site@ ca alias. Această variantă funcționează dacă editorul este de acord să primească o copie a tuturor emailurilor automate generate de site. Ei pot filtra emailurile irelevante sau pot învăța ce se întâmplă cu site-ul. Este potrivită pentru clienți mici.
Opțiunea B: Configurează un filtru de email pentru site@ care să redirecționeze automat alertările despre comentarii către editor și toate emailurile către administratorul tehnic. Administratorul tehnic poate apoi filtra pentru a arhiva/șterge toate alertările de comentarii, astfel încât să nu apară niciodată în inbox. Această redirecționare inițială către editor@ poate fi făcută pe serverul de mail folosind ceva precum procmail. Alternativ, poți face acest lucru în clientul de email dacă rulează non-stop sau poți folosi chiar Gmail, Hotmail, etc. și să construiești manual filtrul.
