Based on your code, I think the problem may have been that you were checking a variable that was undefined. You were checking $db_email
, which in your function was an undefined value, so you’d be looking for an empty result. You need to check the value passed to email_exists()
(which would be the email being validated in the form).
If the patterns applied in your pluggable get_user_by()
function result in the equivalent of how you are obfuscating the emails, then you should get a correct match if the email exists.
function email_exists( $email ) {
// You had this as checking $db_email, which would have been
// undefined. It should be checking for the value passed to
// this function - $email.
$user = get_user_by( 'email', $email );
if ( $user ) {
$user_id = $user->ID;
} else {
$user_id = false;
}
return apply_filters( 'email_exists', $user_id, $email );
}