This topic has 4 replies, 3 voices, and was last updated 1 years, 5 months ago ago by Tony Rodriguez
Good day,
I have tried the following approaches to block spammers from creating further accounts but unfortunately nether of the 2 approaches worked.
Users are still able to create accounts as per normal so I believe either you have custom actions or shortcodes that I am missing.
Can you please assist me, the code I tried is below.
add_action('woocommerce_register_post','is_valid_registration_email_domain', 10, 3 );
function is_valid_registration_email_domain( $username, $email, $validation_errors ){
$valid_email_domains = array( 'gmail.com', 'yahoo.com' ); // 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 ){
$error_text = __( "<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.", "woocommerce" );
$validation_errors->add( 'domain_whitelist_error', $error_text );
}
}
or
// 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 );
Hello, Dominus,
Thank you for contacting us and for using XStore.
Please note that additional customization in files is out of our basic support scope.
We have developed the following functions for you, simply add them to the functions.php of the child theme.
Note: if you are using additional plugins for user registration, the sent functions may not work.
if (! function_exists('et_validate_registration_by_email_domain')){
// Hook into the registration_errors action (To prevent default WordPress registration)
add_action('registration_errors', 'et_validate_registration_by_email_domain', 10, 3);
function et_validate_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
// Define the list of allowed email domains
$allowed_domains = array('gmail.com', 'yahoo.com');
// Extract the domain part of the email address
$user_email_parts = explode('@', $user_email);
$user_domain = strtolower(end($user_email_parts));
// Check if the user's email domain is in the allowed list
if (!in_array($user_domain, $allowed_domains)) {
$errors->add('email_domain_not_allowed', __('Registration is allowed only with specific email domains.', 'xstore-child'));
}
// Return the modified errors object
return $errors;
}
}
if (! function_exists('et_wc_validate_registration_by_email_domain')){
// Hook into the woocommerce_new_customer_data filter (To prevent WooCommerce registration)
add_filter('woocommerce_new_customer_data', 'et_wc_validate_registration_by_email_domain', 10, 1);
function et_wc_validate_registration_by_email_domain($customer_data) {
// Define the list of allowed email domains
$allowed_domains = array('gmail.com', 'yahoo.com');
// Get the email address from the customer data
$user_email = $customer_data['user_email'];
// Extract the domain part of the email address
$user_email_parts = explode('@', $user_email);
$user_domain = strtolower(end($user_email_parts));
// Check if the user's email domain is in the allowed list
if (!in_array($user_domain, $allowed_domains)) {
throw new Exception(__('Registration is allowed only with specific email domains.', 'xstore-child'));
}
// Return the modified customer data
return $customer_data;
}
}
Kind Regards,
8theme team
Thank you so much, this works perfectly!
Hello, @dominus,
We are delighted to have you with us. If you are willing, we would greatly appreciate it if you could leave a five-star rating for our theme and customer and technical support on ThemeForest at the following link: http://themeforest.net/downloads. Doing so would enable us to provide more updates and dedicated support in the future. Your support would be greatly appreciated.
Thank you for reaching out to us. We hope you have a wonderful day.
Sincerely,
8Theme’s Team
Tagged: best selling, blacklisting, domains, email, themes, woocommerce
The issue related to '‘Black listing email domains from creating accounts’' has been successfully resolved, and the topic is now closed for further responses