Cum să schimbi destinatarul notificărilor prin email pentru comentarii noi?

3 mai 2016, 03:44:51
Vizualizări: 17.6K
Voturi: 8

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?

1
Comentarii

V-a ajutat vreun răspuns? Dacă da, vă rugăm să luați în considerare acceptarea unuia.

Andy Macaulay-Brook Andy Macaulay-Brook
20 sept. 2016 15:42:59
Toate răspunsurile la întrebare 5
0
11

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 );
19 mai 2016 16:57:08
1

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.
3 mai 2016 06:10:37
Comentarii

Niciodată nu modifica fișierele de bază. Modificările tale vor fi suprascrise la următoarea actualizare a WordPress. Filtrele sunt ceea ce ai nevoie pentru a schimba lucrurile.

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

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 );
12 apr. 2018 23:47:21
Comentarii

Nu aceasta a fost întrebarea.

wickywills wickywills
11 iul. 2022 10:14:04
0
-1

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

28 aug. 2020 15:19:09
1
-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.

3 mai 2018 09:00:26
Comentarii

Îmi place să văd un vot negativ la un răspuns vechi de 2,5 ani fără niciun comentariu. Mulțumesc Peter Mortensen pentru editare

paulzag paulzag
29 oct. 2020 05:10:48