/**
* Use user_login as fallback when email is empty or invalid.
*
* @since 1.0.0
*
* @param string $email_address The email address.
* @param int $user_id The user ID.
* @return string The email address to use.
*/
function wpf_use_username_as_email_fallback( $email_address, $user_id ) {
// If email is empty or invalid, try to use username instead
if ( empty( $email_address ) || ! is_email( $email_address ) ) {
$user = get_user_by( 'id', $user_id );
if ( $user && ! empty( $user->user_login ) ) {
// Only use user_login if it looks like an email address
if ( is_email( $user->user_login ) ) {
return $user->user_login;
}
}
}
return $email_address;
}
add_filter( 'wpf_get_contact_id_email', 'wpf_use_username_as_email_fallback', 10, 2 );