/**
* Blocks email domains for users.
*
* @see https://wpcodebook.com/woocommerce-block-email-domains-user-registration/
* @see https://github.com/woocommerce/woocommerce/blob/8.0.2/plugins/woocommerce/includes/wc-user-functions.php#L90
*/
add_filter( 'woocommerce_registration_errors', function ( $errors, $username, $email ) {
/**
* Set your whitelisted and/or blacklisted domains here.
* Variable is ignored if empty.
*/
$whitelisted_domains = array( 'gmail.com', 'icloud.com' );
$blacklisted_domains = array( 'example.com' );
$domain = explode( '@', $email );
$domain = $domain[1];
if (
( ! empty( $whitelisted_domains ) && ! in_array( $domain, $whitelisted_domains ) ) ||
( ! empty( $blacklisted_domains ) && in_array( $domain, $blacklisted_domains ) )
) {
$errors->add( 'wpcodebook_email_domain_validation', sprintf( __( "'%s' email domain is not allowed." ), $domain ) );
}
return $errors;
}, 10, 3 );