web-dev-qa-db-ja.com

コメント通知のために管理者アカウントへの電子メール送信を無効にする

以下のコードを使用して、コメント通知とモデレーションEメールをクライアントサイトの複数のEメールアドレスに送信します。

私はこの特定のサイト用のカスタム管理パネルを持っています。私の管理パネルには、コメントが投稿されて承認または通知が必要なときはいつでも通知する必要がある、コンマ区切りのEメールのリストを保持するフィールドがあります。

私のクライアントには1つの問題がありますがそれは素晴らしい作品です。私のクライアントはサイトの管理者でもあるため、アカウント設定の下にある電子メールアドレスにコメント通知の電子メールを受信して​​います。そのため、私のコンマ区切りのEメールリストにEメールを送信することに加えて、管理者アカウントのEメールも送信します。

これを無効にしてAdminアカウントに電子メールを送信し、以下のコードで既に実行しているカスタム設定で電子メールに電子メールを送信する方法についてヘルプを探しています。

これを行う方法について何かアイデアはありますか?

/**
 * Email Multiple people when a Comment is Posted
 */
add_action('comment_post', 'wp_notify_allmods');
function wp_notify_allmods($comment_id) {
    global $wpdb;

    $cn_recipients = get_option('custom_comment_emails');
    //$cn_recipients = '[email protected],[email protected],[email protected]';
    //$moderated_only_option = get_option("cn_moderated_only");
    //
    $comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1");
    $post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID='$comment->comment_post_ID' LIMIT 1");
    $blogname = get_option('blogname');
    $blogurl = get_option('siteurl');
    $comment_author_domain = @gethostbyaddr($comment->comment_author_IP);

    if (get_option('comment_moderation') == 1) {  //if we need to send comment moderation email
        $comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'");
        $notify_message  = sprintf( __('A new comment on the post #%1$s "%2$s" is waiting for your approval'), $post->ID, $post->post_title ) . "\r\n";
        $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
        $notify_message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
        $notify_message .= sprintf( __('E-mail : %s'), $comment->comment_author_email ) . "\r\n";
        //$notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
        $notify_message .= sprintf( __('Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s'), $comment->comment_author_IP ) . "\r\n";
        $notify_message .= __('Comment: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
        $notify_message .= sprintf( __('Approve it: %s'),  $blogurl."/wp-admin/comment.php?action=mac&c=$comment_id" ) . "\r\n";
        $notify_message .= sprintf( __('Delete it: %s'), $blogurl."/wp-admin/comment.php?action=cdc&c=$comment_id" ) . "\r\n";
        $notify_message .= sprintf( __('Spam it: %s'), $blogurl."/wp-admin/comment.php?action=cdc&dt=spam&c=$comment_id" ) . "\r\n";
        $notify_message .= sprintf( __('Currently %s comments are waiting for approval. Please visit the moderation panel:'), $comments_waiting ) . "\r\n";
        $notify_message .= get_option('siteurl') . "/wp-admin/moderation.php\r\n";
        $subject = sprintf( __('[%1$s] Please moderate: "%2$s"'), $blogname, $post->post_title );
        $notify_message = apply_filters('comment_moderation_text', $notify_message, $comment_id);
        $subject = apply_filters('comment_moderation_subject', $subject, $comment_id);
        $message_headers = "";

        $cn_recipients_array = explode(",", $cn_recipients);

        foreach ($cn_recipients_array as $email) {
            @wp_mail($email, $subject, $notify_message, $message_headers);
        }
    } else {  //or just a regular "you've got a new comment" email
        if ($moderated_only_option != 1) { //if comments are not modded but update notifications are set to moderated only don't send
            $notify_message  = sprintf( __('New comment on your post #%1$s "%2$s"'), $comment->comment_post_ID, $post->post_title ) . "\r\n";
            $notify_message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
            $notify_message .= sprintf( __('E-mail : %s'), $comment->comment_author_email ) . "\r\n";
            $notify_message .= sprintf( __('URL    : %s'), $comment->comment_author_url ) . "\r\n";
            $notify_message .= sprintf( __('Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=%s'), $comment->comment_author_IP ) . "\r\n";
            $notify_message .= __('Comment: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
            $notify_message .= __('You can see all comments on this post here: ') . "\r\n";
            $subject = sprintf( __('[%1$s] Comment: "%2$s"'), $blogname, $post->post_title );
            $notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
            $notify_message .= sprintf( __('Delete it: %s'), get_option('siteurl')."/wp-admin/comment.php?action=cdc&c=$comment_id" ) . "\r\n";
            $notify_message .= sprintf( __('Spam it: %s'), get_option('siteurl')."/wp-admin/comment.php?action=cdc&dt=spam&c=$comment_id" ) . "\r\n";
            $notify_message = apply_filters('comment_notification_text', $notify_message, $comment_id);
            $subject = apply_filters('comment_notification_subject', $subject, $comment_id);
            $message_headers = "MIME-Version: 1.0\n"
                . "$from\n"
                . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n";
            $message_headers = apply_filters('comment_notification_headers', $message_headers, $comment_id);

            $cn_recipients_array = explode(",", $cn_recipients);

            foreach ($cn_recipients_array as $email) {
                @wp_mail($email, $subject, $notify_message, $message_headers);
            }
        }
    }

    return true;
}
1
JasonDavis

Settings-> DiscussionのWordPressバックエンドには、中央付近に "Email me Whenever"というラベルの付いた設定があります。

enter image description here

これら2つのボックスのチェックを外します。システムがそれらのEメールを送信するのを防ぎ、あなたが送信したEメールだけを残すことを私は信じています。

4
s_ha_dum