Using WordPress ‘check_is_user_spammed’ PHP filter

The check_is_user_spammed WordPress PHP filter allows you to determine if a user has been marked as a spammer.

Usage

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

function your_custom_function($spammed, $user) {
  // your custom code here

  return $spammed;
}

Parameters

  • $spammed (bool): Whether the user is considered a spammer.
  • $user (WP_User): User object to check against.

More information

See WordPress Developer Resources: check_is_user_spammed

Examples

Block all users with specific email domain

Block users whose email addresses belong to a specific domain.

add_filter('check_is_user_spammed', 'block_specific_email_domain', 10, 2);

function block_specific_email_domain($spammed, $user) {
  if (strpos($user->user_email, '@example.com') !== false) {
    $spammed = true;
  }
  return $spammed;
}

Allow certain usernames

Allow specific users even if they are marked as spammers.

add_filter('check_is_user_spammed', 'allow_certain_usernames', 10, 2);

function allow_certain_usernames($spammed, $user) {
  $allowed_usernames = array('JohnDoe', 'JaneDoe');
  if (in_array($user->user_login, $allowed_usernames)) {
    $spammed = false;
  }
  return $spammed;
}

Check user’s registration date

Mark users as spammers if they registered before a certain date.

add_filter('check_is_user_spammed', 'mark_old_users_as_spammers', 10, 2);

function mark_old_users_as_spammers($spammed, $user) {
  $cutoff_date = '2020-01-01';
  if (strtotime($user->user_registered) < strtotime($cutoff_date)) {
    $spammed = true;
  }
  return $spammed;
}

Check user’s post count

Mark users as spammers if they have more than a certain number of published posts.

add_filter('check_is_user_spammed', 'mark_users_with_high_post_count_as_spammers', 10, 2);

function mark_users_with_high_post_count_as_spammers($spammed, $user) {
  $post_count = count_user_posts($user->ID, 'post', true);
  if ($post_count > 50) {
    $spammed = true;
  }
  return $spammed;
}

Combine multiple conditions

Mark users as spammers if they meet multiple conditions.

add_filter('check_is_user_spammed', 'mark_users_with_multiple_conditions_as_spammers', 10, 2);

function mark_users_with_multiple_conditions_as_spammers($spammed, $user) {
  $post_count = count_user_posts($user->ID, 'post', true);
  $is_old_user = strtotime($user->user_registered) < strtotime('2020-01-01');

  if ($post_count > 50 && $is_old_user) {
    $spammed = true;
  }
  return $spammed;
}