Using WordPress ‘comment_notification_recipients’ PHP filter

The comment_notification_recipients WordPress PHP filter allows you to modify the list of email addresses that receive a comment notification.

Usage

add_filter('comment_notification_recipients', 'your_custom_function', 10, 2);

function your_custom_function($emails, $comment_id) {
  // your custom code here
  return $emails;
}

Parameters

  • $emails (string[]): An array of email addresses to receive a comment notification.
  • $comment_id (string): The comment ID as a numeric string.

More information

See WordPress Developer Resources: comment_notification_recipients

Examples

Add a site admin’s email to the list of recipients

Add the site admin’s email to the list of recipients for comment notifications.

add_filter('comment_notification_recipients', 'add_site_admin_email', 10, 2);

function add_site_admin_email($emails, $comment_id) {
  $admin_email = get_option('admin_email');
  $emails[] = $admin_email;
  return $emails;
}

Notify all registered users of new comments

Send a comment notification to all registered users on the site.

add_filter('comment_notification_recipients', 'notify_all_registered_users', 10, 2);

function notify_all_registered_users($emails, $comment_id) {
  $users = get_users(['fields' => ['user_email']]);
  foreach ($users as $user) {
    $emails[] = $user->user_email;
  }
  return $emails;
}

Notify only users with a specific role

Send a comment notification only to users with a specific role (e.g., ‘editor’).

add_filter('comment_notification_recipients', 'notify_specific_role_users', 10, 2);

function notify_specific_role_users($emails, $comment_id) {
  $role = 'editor';
  $users = get_users(['role' => $role, 'fields' => ['user_email']]);
  foreach ($users as $user) {
    $emails[] = $user->user_email;
  }
  return $emails;
}

Exclude a specific email address from notifications

Prevent a specific email address from receiving comment notifications.

add_filter('comment_notification_recipients', 'exclude_specific_email', 10, 2);

function exclude_specific_email($emails, $comment_id) {
  $exclude_email = '[email protected]';
  $emails = array_diff($emails, [$exclude_email]);
  return $emails;
}

Add custom email addresses to the notification list

Add custom email addresses to the list of recipients for comment notifications.

add_filter('comment_notification_recipients', 'add_custom_emails', 10, 2);

function add_custom_emails($emails, $comment_id) {
  $custom_emails = ['[email protected]', '[email protected]'];
  $emails = array_merge($emails, $custom_emails);
  return $emails;
}