The is_email_address_unsafe WordPress PHP Filter checks if an email address is considered unsafe.
Usage
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
// your custom code here
return $is_email_address_unsafe;
}, 10, 2);
Parameters
$is_email_address_unsafe(bool) – Whether the email address is “unsafe”. Default false.$user_email(string) – User email address.
More information
See WordPress Developer Resources: is_email_address_unsafe
Examples
Block a specific domain
Prevent email addresses with a specific domain (e.g., “example.com”) from being used.
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
$blocked_domain = 'example.com';
if (strpos($user_email, $blocked_domain) !== false) {
return true;
}
return $is_email_address_unsafe;
}, 10, 2);
Block multiple domains
Prevent email addresses from multiple domains (e.g., “example.com” and “example.org”) from being used.
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
$blocked_domains = array('example.com', 'example.org');
foreach ($blocked_domains as $domain) {
if (strpos($user_email, $domain) !== false) {
return true;
}
}
return $is_email_address_unsafe;
}, 10, 2);
Block disposable email addresses
Prevent disposable email addresses (e.g., mailinator.com) from being used.
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
$disposable_email_domains = array('mailinator.com');
foreach ($disposable_email_domains as $domain) {
if (strpos($user_email, $domain) !== false) {
return true;
}
}
return $is_email_address_unsafe;
}, 10, 2);
Allow only specific domain
Allow only email addresses from a specific domain (e.g., “company.com”).
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
$allowed_domain = 'company.com';
if (strpos($user_email, $allowed_domain) === false) {
return true;
}
return $is_email_address_unsafe;
}, 10, 2);
Allow only multiple specific domains
Allow only email addresses from multiple specific domains (e.g., “company.com” and “company.org”).
add_filter('is_email_address_unsafe', function($is_email_address_unsafe, $user_email) {
$allowed_domains = array('company.com', 'company.org');
$is_allowed = false;
foreach ($allowed_domains as $domain) {
if (strpos($user_email, $domain) !== false) {
$is_allowed = true;
break;
}
}
return !$is_allowed;
}, 10, 2);