// Allow login with National ID Number
function custom_woocommerce_authenticate_username( $user, $username, $password ) {
if ( empty( $username ) ) {
return $user;
}
if ( is_email( $username ) ) {
$user = get_user_by( 'email', $username );
} else {
// Check if the username is a regular username
$user = get_user_by( 'login', $username );
// If not, try to get the user by national_id
if ( ! $user ) {
$user_query = new WP_User_Query( array(
'meta_key' => 'national_id',
'meta_value' => $username,
'number' => 1,
'count_total' => false,
'fields' => 'ID',
) );
if ( ! empty( $user_query->results ) ) {
$user = get_user_by( 'id', $user_query->results[0] );
}
}
}
// If user is found by national_id, set the username to the user's login
if ( $user ) {
$username = $user->user_login;
}
return wp_authenticate_username_password( null, $username, $password );
}
add_filter( 'authenticate', 'custom_woocommerce_authenticate_username', 20, 3 );
Login in use user meta value
by
Tags: