Here is a snippet that assign author role to a new registered member whose email is [email protected] where you need to modify to fit your needs:
add_action( 'user_register', 'user_register_cb', 10, 1 );
function user_register_cb( $user_id ){
$user_info = get_userdata( $user_id );
$email = $user_info->user_email;
$domain = '.co.uk';
$pos = strpos( $email, $domain );
if( $pos === 0 ){
// You can assign any other role
}else{
$user_info->set_role( 'author' );
}
}
You can add those codes in your functions.php in the theme, if you think your theme won’t be changed. Otherwise mu-plugins is the best solution. To use mu-plugins, go to /wp-content/ and find the folder with name ‘mu-plugins’. If there is no folder in that name, then create a folder, name it ‘mu-plugins’, create a file inside that, give any name you like and paste the code in there. You don’t need to activate that plugin. Mu-plugins means must use plugins, so it will be activated automatically always. If you use mu-plugins then add a php start tag at the beginning of the code.