Тонкая настройка E-mail оповещения о комментариях в WordPress

Тонкая настройка E-mail оповещения о комментариях в WordPressДоброго времени суток, друзья и товарищи.
Данная тема будет всецело посвящена комментариям, в частности оповещениям о них на электронную почту.

Содержание:

Почему дублируются E-mail оповещения о комментариях в WordPress?

Дабы понять причину, стоит немного углубиться в принципы, которым руководствуется движок WordPress. Если мы зайдём в Настройки –> Общие, то увидим там вписанный электронный адрес, который используется в целях администрирования.

На этот адрес отправляется всё, что связанно с работой сайта, включая оповещения о новых оставленных комментариях. Данный адрес принадлежит создателю сайта.

Однако роль «Создатель сайта» присвоить участнику нельзя, потому вы закономерно зарегистрировались в качестве администратора.

И если вы размещаете посты со своей учётной записи администратора, то на вписанный в ваш профиль (Пользователи -> Ваш профиль) электронный адрес приходят все оповещения об оставленных комментариях.

В конечном итоге мы имеем следующее: оповещения приходят на электронный адрес, что вписан в вашем личном профиле, а также на адрес, который используется в целях администрирования.

Вот мы и выяснили причины дублирования E-mail оповещений о комментариях.

Как отключить дублирование оповещений на E-mail о комментариях

Самое простое — установить единый электронный адрес. Однако в целях безопасности так делать не рекомендуется. Мы пойдём другим путём.

Отключаем оповещения о оставленных комментариях автору материала

Для отключения отправки оповещений о комментариях на электронный адрес пользователя, который является автором размещённого материала, необходимо сделать следующее:

В файле functions.php используемой вами темы вписать этот небольшой код.

function comment_notification( $emails, $comment_id ) {
    $emails = array( get_option( 'admin_email' ) );
    return $emails;
}
add_filter( 'comment_moderation_recipients', 'comment_notification', 11, 2 );
add_filter( 'comment_notification_recipients', 'comment_notification', 11, 2 );

После того, как вы его впишите, оповещения о составленных комментариях к материалам будут приходить только на адрес создателя сайта.

Отключаем оповещения о оставленных комментариях создателю сайта

Случается, что возникает и обратная ситуация. Необходимо отправлять оповещение исключительно автору, который этот самый пост разместил, не беспокоя при этом «лишним» оповещением создателя сайта.

Сделать это не менее сложно, чем и в предыдущем варианте. Просто разместите данный код в файле functions.php темы, что используется на вашем WordPress сайте.

function comment_notification( $emails, $comment_id ) {
    $comment = get_comment( $comment_id );
    $post = get_post( $comment->comment_post_ID );
    $user = get_user_by( 'id', $post->post_author );
    if ( user_can( $user->ID, 'edit_published_posts' ) && ! empty( $user->user_email ) ) {
        $emails = array( $user->user_email );
    }
    return $emails;
}
add_filter( 'comment_moderation_recipients', 'comment_notification', 11, 2 );
add_filter( 'comment_notification_recipients', 'comment_notification', 11, 2 );

Теперь оповещения о комментариях будут приходить на почту только автору поста, не беспокоя электронный ящик создателя сайта.

Как полностью отключить оповещения на E-Mail об оставленных комментариях

Если же вы и вовсе желаете отключить отправку оповещений как создателю сайта, так автору поста, то для этого используется следующий код.

function comment_notification( $emails, $comment_id ) {
    $emails = array();
    return $emails;
}
add_filter( 'comment_moderation_recipients', 'comment_notification', 11, 2 );
add_filter( 'comment_notification_recipients', 'comment_notification', 11, 2 );

Всё. Более E-mail сообщения о комментариях никого не побеспокоят.

Задать отправку оповещений на совершенно сторонний E-mail адрес

Существует также возможность указать отдельный электронный ящик, на который будут приходить оповещения обо всех оставленных комментариях к материалам на сайте.

За данный функционал отвечает приведённый ниже код, только не забудьте изменить электронный адрес sample@mail.ru на свой.

function comment_notification( $emails, $comment_id ) {
    $emails = array( 'sample@mail.ru' );
    return $emails;
}
add_filter( 'comment_moderation_recipients', 'comment_notification', 11, 2 );
add_filter( 'comment_notification_recipients', 'comment_notification', 11, 2 );

Вписав данный код с адресом, все оповещения будут приходить именно на него, электронные ящик автора поста и администратора не будут подвергаться беспокойству.

Краткий итог

Теперь вы знаете, почему возникает дублирование оповещений о комментариях, и как можно тонко настроить оповещения об оставленных\требующих одобрения комментариях в движке Вордпресс.

А у меня на этом всё. Ежели остались вопросы, то стоит их изложить в комментариях к материалу.