Recently for a project it was necessary to restrict WordPress registration to a select few specific domains, for example: domains with an email address from a certain company, i.e. email addresses ending with @warrenchandler.com.
Rather than using a plugin to do limit domain access when registering, a few lines of code is all it takes to restrict access on sign-up, with a handy error message included to boot.
Here’s the code you’ll need – added to your site theme’s functions.php file.
// Allow Registration Only from @warrenchandler.com email addresses function is_valid_email_domain($login, $email, $errors ){ $valid_email_domains = array("warrenchandler.com","warrenchandler.co.uk");// allowed domains $valid = false; // sets default validation to false foreach( $valid_email_domains as $d ){ $d_length = strlen( $d ); $current_email_domain = strtolower( substr( $email, -($d_length), $d_length)); if( $current_email_domain == strtolower($d) ){ $valid = true; break; } } // Return error message for invalid domains if( $valid === false ){ $errors->add('domain_whitelist_error',__( '<strong>ERROR</strong>: Registration is only allowed from selected approved domains. If you think you are seeing this in error, please contact the system administrator.' )); } } add_action('register_post', 'is_valid_email_domain',10,3 );
And that’s all it takes. Invalid email domains will produce the following result:
Leave A Comment