The email_exists WordPress PHP filter checks if a given email address already exists in the WordPress database.
Usage
add_filter('email_exists', 'your_function_name', 10, 2);
function your_function_name($user_id, $email) {
// Your custom code here
return $user_id;
}
Parameters
$user_id(int|false) – The user ID associated with the email, or false if the email does not exist.$email(string) – The email address to check for existence.
More information
See WordPress Developer Resources: email_exists
Examples
Block specific email domains
Disallow email addresses from specific domains during registration.
add_filter('email_exists', 'block_email_domains', 10, 2);
function block_email_domains($user_id, $email) {
$blocked_domains = array('example.com', 'baddomain.com');
$email_domain = substr(strrchr($email, "@"), 1);
if (in_array($email_domain, $blocked_domains)) {
return true; // Email is blocked, return as if it exists
}
return $user_id;
}
Allow multiple users with same email
Allow multiple users to share the same email address.
add_filter('email_exists', 'allow_shared_email', 10, 2);
function allow_shared_email($user_id, $email) {
return false; // Always return false to allow shared email addresses
}
Log email existence checks
Log the email existence checks to a custom log file.
add_filter('email_exists', 'log_email_exists', 10, 2);
function log_email_exists($user_id, $email) {
$log_file = 'email_exists_log.txt';
$log_message = $email . ' - ' . ($user_id ? 'Exists' : 'Not Found') . PHP_EOL;
file_put_contents($log_file, $log_message, FILE_APPEND);
return $user_id;
}
Ignore case when checking email existence
Ignore the case of email addresses when checking for existence.
add_filter('email_exists', 'ignore_case_email_exists', 10, 2);
function ignore_case_email_exists($user_id, $email) {
global $wpdb;
$lower_email = strtolower($email);
$user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users WHERE LOWER(user_email) = %s", $lower_email));
return $user_id;
}
Replace email_exists with custom function
Replace the default email_exists function with a custom function.
add_filter('email_exists', 'custom_email_exists', 10, 2);
function custom_email_exists($user_id, $email) {
// Your custom email exists function here
// Return user ID if the email exists, false otherwise
return $user_id;
}