The comment_moderation_recipients WordPress PHP filter allows you to modify the list of recipients for comment moderation emails.
Usage
add_filter('comment_moderation_recipients', 'your_custom_function', 10, 2); function your_custom_function($emails, $comment_id) { // your custom code here return $emails; }
Parameters
$emails
(string[]): List of email addresses to notify for comment moderation.$comment_id
(int): Comment ID.
More information
See WordPress Developer Resources: comment_moderation_recipients
Examples
Add a new recipient
Add a new email address to the list of recipients for comment moderation emails.
add_filter('comment_moderation_recipients', 'add_new_recipient', 10, 2); function add_new_recipient($emails, $comment_id) { $new_email = '[email protected]'; $emails[] = $new_email; return $emails; }
Remove a specific recipient
Remove a specific email address from the list of recipients for comment moderation emails.
add_filter('comment_moderation_recipients', 'remove_specific_recipient', 10, 2); function remove_specific_recipient($emails, $comment_id) { $email_to_remove = '[email protected]'; $emails = array_diff($emails, array($email_to_remove)); return $emails; }
Replace all recipients
Replace all existing recipients with a new list of email addresses for comment moderation emails.
add_filter('comment_moderation_recipients', 'replace_all_recipients', 10, 2); function replace_all_recipients($emails, $comment_id) { $new_emails = array('[email protected]', '[email protected]'); $emails = $new_emails; return $emails; }
Send to author only if the comment is on their post
Send comment moderation emails only to the post author if the comment is on their post.
add_filter('comment_moderation_recipients', 'send_to_author_only', 10, 2); function send_to_author_only($emails, $comment_id) { $comment = get_comment($comment_id); $post = get_post($comment->comment_post_ID); $author_email = get_the_author_meta('email', $post->post_author); return array($author_email); }
Exclude recipients based on comment content
Exclude specific recipients from receiving comment moderation emails if the comment contains certain words.
add_filter('comment_moderation_recipients', 'exclude_recipients_based_on_content', 10, 2); function exclude_recipients_based_on_content($emails, $comment_id) { $comment = get_comment($comment_id); $comment_content = strtolower($comment->comment_content); $words_to_check = array('word1', 'word2'); foreach ($words_to_check as $word) { if (strpos($comment_content, $word) !== false) { $email_to_remove = '[email protected]'; $emails = array_diff($emails, array($email_to_remove)); break; } } return $emails; }