web-dev-qa-db-fra.com

Comment modifier la notification par courrier électronique pour les commentaires

Comment pouvez-vous changer l'utilisateur qui reçoit l'annonce par courrier électronique de notification pour les nouveaux commentaires et la modération des commentaires?

WordPress envoie les avis à l'utilisateur administrateur. Mon client est l'éditeur du site. Je souhaite que les avis de commentaires soient envoyés par la poste à l'éditeur et non à l'administrateur.

Comment tu fais ça?

3
user93385

Il existe un excellent article expliquant comment connecter deux filtres pour cela à l'adresse http://www.sourcexpress.com/customize-wordpress-comment-notification-emails/

Pour envoyer vos notifications à un utilisateur particulier et non à l'administrateur du site, essayez ceci pour un utilisateur ayant l'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 );
3

Je ne suis au courant d'aucun crochet susceptible de changer uniquement le destinataire de la notification de commentaire. Vous devrez probablement remplacer une sorte de fonction principale, mais voici une solution de contournement que vous pouvez utiliser:

1. Désactiver la fonctionnalité de messagerie à partir des paramètres de commentaires WordPress ( sauf si vous souhaitez également être averti )

2. Envoyez-le manuellement à l'aide de comment_post action hook, ajoutez simplement cette fonction à 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 est une action déclenchée immédiatement après l'insertion d'un commentaire dans la base de données.

2
N00b

Il existe un filtre pour changer le texte de l'e-mail de modération de commentaire:

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 );
1
Ric Johnson

Au cas où quelqu'un tomberait sur cette question et n'aimerait pas le piratage du code dans les autres réponses, j'offre cette alternative que je trouve beaucoup plus flexible.

Créez une adresse électronique pour le compte administrateur du blog. par exemple. [email protected] différent de [email protected] et [email protected]

Option A. Transférer site @ email à l'éditeur et à l'administrateur technique. Je crée le site @ comme alias. Cela fonctionne si votre éditeur accepte de recevoir une copie de tous les courriels automatiques générés par le site. Ils filtrent simplement les courriels non pertinents ou apprennent ce qui se passe réellement avec un site. C'est bon pour les petits clients.

Option B Configurez un filtre de messagerie pour le site @ afin de transférer automatiquement les courriers électroniques concernant les alertes de commentaires à l'éditeur et tous les courriers électroniques à l'administrateur technique. L'administrateur technique peut alors filtrer pour archiver/supprimer toutes les alertes de commentaires afin qu'elles n'apparaissent jamais dans leur boîte de réception. Ce transfert initial à editor @ peut être effectué sur le serveur de messagerie en utilisant quelque chose comme procmail. Sinon, vous pouvez le faire sur votre client de messagerie s'il fonctionne 24 heures sur 24, 7 jours sur 7 ou vous pouvez même utiliser gmail/hotmail/etc. et créer manuellement le filtre.

0
paulzag