Asignar role por defecto al registrarse en Woocommerce
Por defecto Woocommerce al registrase un nuevo usuario en el proceso de compra, el perfil es asignado automáticamente al role «Customer». Si queremos que nuestros nuevos clientes tengan asignado un role especifico, por ejemplo por que les aplicaremos unas tarifas especiales a los usuarios ya registrados, añadiendo el siguiente código en nuestro archivo functions.php de nuestro tema, o de nuestro child theme, voila.
1 2 3 4 5 6 7 8 9 10 | /** * Remplaza el role 'customer' que wooocommerce utiliza por defecto, por que el que tu eligas. By iontics.com **/ add_filter('woocommerce_new_customer_data', 'wc_assign_custom_role', 10, 1); function wc_assign_custom_role($args) { $args['role'] = 'subscriber'; return $args; } |
En este caso con el ejemplo anterior, asignaríamos el role por defecto a los usuarios registrados de Woocommerce a «subscriber». Puedes modificarlo por el que desees. Recuerda que debes utilizar el slug del rol, no el nombre.
También no olvides de cambiar el role por defecto para cuando los usuarios se registran en tu web como usuarios desde Ajustes > Generales > Perfil predeterminado para nuevos usuarios. Este perfil elegido aquí, será el que se utilice cuando el usuario se registra, mediante el formulario de registro de usuarios de WordPress y no de Woocommerce, por lo que te recomendamos cambiarlo en ambos por igual.
Recuerda por otro lado, un buen plugin para gestionar los perfiles y roles de tus usuarios WordPress, te recomendamos Members
¡Gracias por el código! Funciona muy bien 🙂
De repente, si quisiéramos asignar un rol por defecto para cada categoría de producto… ¿Qué ajuste podríamos hacer? Gracias!
Saludo!!
¡Hola!, buenas tardes. Primero que nada quisiera agradecer el código que han documentado, funciona perfectamente. Por otro lado, quisiera solicitar su ayuda, ya que quisiera implementarlo con una condición previa; básicamente quisiera asignar el rol con base en la página donde se están registrando. Es decir, si se registran en la página original de woocommerce dar «x» rol y si se registran en la página secundaria creada con un shortcode, asignar «y» rol. El código que estoy usando es este, sin embargo no tengo buenos resultados:
function wc_assign_custom_role($args) {
if ( is_page(‘mi-cuenta’) )
{$args[‘role’] = ‘y’;return $args;}
else
{ $args[‘role’] = ‘x’;return $args;}
}
Gracias anticipadas.
¡Saludos!
Hola Ramiro,
Tu código parece correcto. Aunque veo que te falta el
Tienes esta linea?
Yo lo pude resolver asi:
request );
/**
* Remplaza el role ‘customer’ que wooocommerce utiliza por defecto, por que el que tu eligas. By iontics.com
**/
add_filter(‘woocommerce_new_customer_data’, ‘wc_assign_custom_role’, 10, 1);
function wc_assign_custom_role($args) {
if( ! ( end($request) == ‘my-account’ && is_account_page() ) )
{$args[‘role’] = ‘wholesale_customer’;}
else
{ $args[‘role’] = ‘customer’;}
return $args;
}
Espero te ayude