No tengo mucha experiencia en WooComerce pero se que los registros de usuarios son importantes para las tiendas en línea. Gracias a la amabilidad de un cliente, he tenido la oportunidad de descubrir que WooComerce tiene un sistema de registro aparte del registro normal de WordPress que permite el registro de usuarios a pesar de deshabilitarlo desde las configuraciones generales de WordPress. En esta entrada comparto la solución que encontré en una entrada de StackOverflow, con la esperanza de mantenerla vida, dar crédito al autor y que con un poco mas de contexto, quien tenga el mismo problema, de con una solución mas pronto.
Tal vez te interese algún otro post sobre WordPress? recomiendo los siguientes:
Estoy teniendo problemas para ponerle titulo a este post, pero se quedará como tutorial por ahora, pero el código presentado aquí no es creación mía sino del usuario LoictheAztec quien compartió el siguiente código.
https://stackoverflow.com/questions/49013519/limit-domain-registration-on-woocommerce
//https://stackoverflow.com/questions/49013519/limit-domain-registration-on-woocommerce
add_action('woocommerce_register_post','is_invalid_registration_email_domain', 10, 3 );
function is_invalid_registration_email_domain( $username, $email, $validation_errors ){
$invalid_email_domains = array( 'forimails.site', 'domain2', 'domain3' ); // Restricted domains
$invalid = false; // sets default validation to false
foreach( $invalid_email_domains as $d ) {
$d_length = strlen( $d );
$current_email_domain = strtolower( substr( $email, -($d_length), $d_length));
if( $current_email_domain == strtolower($d) ) {
$invalid = true;
break;
}
}
// Return error message for invalid domains
if( $invalid ){
$error_text = __( "<strong>ERROR</strong>: El dominio se encuentra en una lista negra. Si crees que es un error, por favor contactate con el administrador del sistema", "woocommerce" );
$validation_errors->add( 'domain_whitelist_error', $error_text );
}
}
Bloquear registros de usuarios
Una instalación básica de WordPress permite evitar el registro de usuarios con solo desactivar la casilla miembros, la opción de Cualquiera puede registrarse, con lo que los registros de spam deberían detenerse, pero WooComerce agrega sus propios ajustes.
Aunque es posible deshabilitar el registro de usuarios desde WooCommerce, Lo mas probable es que no quieras hacerlo. Aun así, he notado que la facilidad que ofrece este plugin para el registro, hace que aparezcan muchos de spam, que insisten y logran crear cuentas aun a pesar de estar habilitado Recaptcha.
Si no quieres agregar mas plugin a tu instalación, puedes incrustar este código, que usa los hooks de WordPress para poder interferir con el registro de usuarios y decidir si se les permite el paso o no de acuerdo al correo que utilizan para registrarse, para lo cual puedes agregarlo en archivo function.php de tu tema
o agregar un fragmento de código con el plugin de Code Snippets, para que tus configuraciones no se pierdan al actualizar el tema.
Con estas cosas tienes suficiente para poder discriminar por dominio del correo con el que se registran los usuarios, para lo cual basta con editar el array que contiene los dominios que no deseas permitir. puedes agregar los dominios separados por coma y encerrados entre comillas simples en el campo array( 'forimails.site', 'domain2', 'domain3' );
que en mi caso, el spam provenía desde el dominio forimails.site.
Conclusiones.
Los registros de usuario de spam son una molestia importante. Pueden ser señal de un ataque para descubrir vulnerabilidades en el sitio y aunque se hayan tomado diversas medidas para evitarlos, es posible que quieras utilizar una medida mas manual con la que evitar que molesten. El consejo de este usuario me sirvió mucho para cumplir la solicitud del cliente, pero debido a que no tenia contexto, tarde mucho en entender como aplicarlo.