WooCommerce tiene una opción que permite generar automáticamente la contraseña para los nuevos usuarios que se registran a través del formulario de registro de la tienda (el que se muestra en la página Mi cuenta, si se activa). Así el usuario no tiene que introducir más que su dirección de correo electrónico.
Si activamos esta opción, el usuario recibe su contraseña por correo; una contraseña generada aleatoriamente. Pero podemos cambiar este comportamiento y personalizar la forma en que se genera la contraseña automática de WooCommerce. Veamos cómo.
Tabla de contenidos
La contraseña generada automáticamente en el registro de WordPress
La opción está en WooCommerce > Ajustes > Cuentas y privacidad > Creación de cuenta > Al crear una cuenta, crea automáticamente una contraseña para la cuenta. Activándola, no será necesario que el cliente introduzca una contraseña cuando se registre a través del formulario de registro de WooCommerce (el que aparece en la página Mi cuenta siempre que tengas también activada la opción Permite a los clientes crear una cuenta en la página «Mi cuenta».).
Es más, si también activas la opción Al crear una cuenta, genera automáticamente para el cliente un nombre de usuario de cuenta según su nombre, apellido o correo electrónico, lo único que tendrá que hacer el cliente para registrarse es introducir su correo electrónico, nada más. Y ya sabes que cuantos menos datos se pidan más fácil es que la gente complete el formulario, sea el que sea.
Cómo genera WooCommerce la contraseña
Con la opción activada, lo que WooCommerce hace cuando un cliente se registra es usar la función de WordPress wp_generate_password para generar una contraseña aleatoria y se la enviará por correo electrónico al cliente, junto con un enlace (el de la página Mi cuenta) donde puede cambiarla.
Si has visitado el enlace a la función wp_generate_password habrás visto que, por defecto, la contraseña tiene 12 caracteres, que puede incluir caracteres especiales, es decir: !@#$%^&*(), y que no puede incluir caracteres especiales extendidos, que son -_ []{}<>~`+=,.;:/?|’.
Pero, como casi todo en WordPress/WooCommerce, esta contraseña la podemos personalizar, haciendo que se genere según las normas que nosotros le impongamos. Vamos a ver cómo.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Personalizar la contraseña generada automáticamente por WooCommerce
La cuestión del asunto está en el filtro de WooCommerce woocommerce_new_customer_data, que nos permite cambiar la información del usuario que se va a crear: nombre de usuario, contraseña, correo electrónico y rol (que por defecto es Cliente), de esta forma:
$new_customer_data = apply_filters( 'woocommerce_new_customer_data', array( 'user_login' => $username, 'user_pass' => $password, 'user_email' => $email, 'role' => 'customer' ) );
Si sabes cómo funciona un filtro, te habrás dado cuenta de lo fácil que es así personalizar la contraseña. Y, si no lo sabes… bueno, para eso estoy explicando: aquí te doy los detalles.
Por cierto, si no sabes dónde poner estos códigos, echa un vistazo a esta entrada:
Cambiar la contraseña autogenerada
Es muy sencillo. Pongamos, por ejemplo, que quieres que la contraseña sea el nombre de usuario (¡ni se te ocurra hacerlo, esto sería un enorme agujero de seguridad, se trata tan sólo de un ejemplo!). No habría más que hacer esto:
add_filter ('woocommerce_new_customer_data', function ($datos) { $datos['user_pass'] = $datos['user_login']; return $datos; }, 10, 1);
Repito: un buen ejemplo de algo que nunca debe hacerse. Vamos a ver cosas más útiles. Por ejemplo, que la contraseña incluya el nombre de tu tienda, algo así como «nombre_tienda_{contraseña autogenerada por defecto}». Bastaría con:
add_filter ('woocommerce_new_customer_data', function ($datos) { $datos['user_pass'] = 'nombre_tienda_' . $datos['user_pass']; return $datos; }, 10, 1);
Esto ya va siendo más útil. También podemos ignorar los parámetros por defecto para la contraseña que genera WooCommerce (doce caracteres de longitud, con caracteres especiales, sin caracteres extendidos) y establecer los nuestros propios.
Esto podemos hacerlo usando la función que vimos antes, wp_generate_password, pero pasándole nuestros propios parámetros. Por ejemplo, una contraseña de 50 caracteres de longitud, con caracteres especiales y con caracteres especiales extendidos:
add_filter ('woocommerce_new_customer_data', function ($datos) { $datos['user_pass'] = wp_generate_password (50, true, true); return $datos; }, 10, 1);
Lo cual sería una buena forma de que los usuarios te odien. Bromas aparte, con estos ejemplos que hemos visto puedes ya conseguir casi cualquier cosa que quieras que WooCommerce haga al generar la contraseña para los nuevos clientes que se registran.
Amanda dice
¿Cómo podría forzar a que la contraseña de Woocommerce fuera el email del usuario?
El nombre de usuario sería el que cree el cliente.
Esto me facilitaría mucho la gestión. ¿Sería muy inseguro?