Una situación mas frecuente de lo que piensas
Cambiar el Rol por defecto en Woocommerce es algo necesario si queremos tener varios tipos de clientes con precios distintos.
Os pongo en situación:
Un cliente mío (le llamaremos Jose) que tiene una papelería online, tiene dos tipos de Comprador:
- El habitual que compra físicamente en su tienda a través del POS (Punto de venta táctil) y que además puede comprar Online en su Ecommerce con o sin cuenta de cliente.
- Y el Cliente Profesional, que tiene por ejemplo una oficina, y al cual le hace un descuento exclusivo, este tipo de cliente también compra por ambas vías pero siempre accede a través de su cuenta de cliente. La cuenta de Cliente para estos Compradores profesionales la crea manualmente Jose, ya que hay que introducir datos extra, que el formulario de registro de Woocommerce no incorpora.
Perfecto, ahora sabemos que hay dos clases de cliente que han de tener condiciones de compra distintas.
Ambos tipos de cliente pueden ser usuarios registrados del Ecommerce, pero queremos que el Cliente Profesional pague con un descuento de mayorista, digamos que del 20%.
¿Cómo se soluciona eso?
Crear un nuevo Rol de Cliente
Para empezar debemos crear un nuevo Rol que tenga las mismas capacidades que el que se crea por defecto en Woocommerce, que es Cliente (o Customer según tu idioma).
De esta forma diferenciamos al cliente tradicional, que se registra Online en nuestro Ecommerce, del Cliente Profesional que registramos manualmente o a través de un formulario de registro alternativo.
No me voy a complicar la vida, para crear nuevos Roles disponemos de un fantástico plugin llamado WPFront User Role Editor creado por Syam Mohan
Este plugin nos permite crear nuevos Roles, copiando las atribuciones de Roles ya creados, así que podremos hacer este proceso en menos de 1 minuto.
Al nuevo Rol le vamos a llamar “Cliente Online” así lo distinguiremos del Cliente que creamos nosotros manualmente.
Recordemos que “Cliente Online” debe ser el Rol que se asigna de forma automática a los nuevos usuarios que se registran en Woocommerce desde la web.
Indicaremos el nombre del nuevo Rol donde indica la primera flecha, y en el desplegable que señala la segunda, seleccionaremos el Rol de “Customer” para que copie los ajustes de ese Rol.
Guardamos los cambios y listo.
Cambiar el Rol por defecto
Woocommerce asigna por defecto el Rol de Cliente (o Customer) a los nuevos usuarios que se registran online, pero nosotros queremos reservar ese Rol para los Clientes profesionales que crearemos manualmente.
Para cambiar esta característica, podemos hacerlo de dos formas: Con un Plugin o con unas líneas de código.
Instalar un Plugin para tan poca cosa no tiene demasiado sentido. Puedes hacerlo añadiendo el código en el archivo functions.php de tu tema, o del child theme.
¿Te suena a Chino?
Si no quieres complicarte la vida accediendo a los ficheros de tu instalación, puedes instalar el plugin “Code Snippets” que además te va a servir después para insertar otros fragmentos de código.
Soy muy partidario de esta solución, no nos obliga a crear un tema hijo ni a tocar el archivo functions, además es un plugin liviano que no va a ralentizar para nada nuestra web.
Una vez que instales y actives el Plugin, debes ir a Fragmentos de código (con el símbolo de unas tijeras) y Añadir nuevo, te debería quedar como en la imagen.
Aquí te dejo el código para que lo copies y pegues.
/**
* Remplaza el rol 'customer' que wooocommerce utiliza por defecto, por que el que tu elijas.
**/
add_filter('woocommerce_new_customer_data', 'wc_assign_custom_role', 10, 1);
function wc_assign_custom_role($args) {
$args['role'] = 'cliente_online';
return $args;
}
¿Necesitas una Web?
Dime lo que necesitas y estaré encantado de ayudarte.
¿Quieres vender tus productos? ¿Necesitas una Web Corporativa? ¿Quieres vender tus Cursos o Servicios?
Crear los descuentos para un Rol determinado
Genial, ahora que ya tenemos los dos Roles diferenciados y que a partir de ahora, Woocommerce asignará el Rol de “Cliente Online” sólo a los usuarios que se registren desde la Web, vamos a crear el sistema de descuentos.
Como siempre, las dos soluciones: Con un plugin (suelen ser de pago) y con unas líneas de código.
Una de las opciones de pago que nos solucionan este paso es Finale en su versión Pro que nos permite crear campañas con descuentos por categoría, por Rol de usuario y mucho más o Yith Woocommerce Role based prices, que nos permite asignar precios diferentes en función del Rol.
Ya he dicho antes que el Plugin “Code Snippets” nos iba a servir en mas ocasiones.
Aquí debajo te dejo el código, igual que en el paso anterior, solo tienes que crear un fragmento de código, ponerle un título y pegar estas líneas.
En este caso he indicado que el descuento será del 20% para el Rol “Customer”, que será el Rol por defecto cuando se cree un nuevo usuario de forma manual en nuestra tienda online o bien cuando se cree algún tipo de registro de clientes alternativo.
En realidad lo que modifico es $orig_price * 0.80 para que solamente cobre el 80% del precio a los usuarios con el Rol “customer” o cliente (que son los clientes profesionales).
/* Parte 1 - Producto de WooCommerce */
add_filter( 'woocommerce_get_price_html', 'descuento_clientes_producto', 9999, 2 );
function descuento_clientes_producto( $price_html, $product ) {
// SOLO EN LA TIENDA
if ( is_admin() ) return $price_html;
// SOLO SI NO HAY PRECIO
if ( '' === $product->get_price() ) return $price_html;
// SI EL CLIENTE ESTÁ CONECTADO APLICAR 20% DE DESCUENTO
if ( wc_current_user_has_role( 'customer' ) ) {
$orig_price = wc_get_price_to_display( $product );
$price_html = wc_price( $orig_price * 0.80 );
}
return $price_html;
}
/* Parte 2 - Carrito y finalizar compra */
add_action( 'woocommerce_before_calculate_totals', 'descuento_clientes_carrito', 9999 );
function descuento_clientes_carrito( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
// SI EL CLIENTE NO ESTA CONECTADO NO SE APLICA DESCUENTO
if ( ! wc_current_user_has_role( 'customer' ) ) return;
// LOOP POR PRODUCTOS DEL CARRITO Y APLICAR DESCUENTO 20%
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$price = $product->get_price();
$cart_item['data']->set_price( $price * 0.80 );
}
}
¿Podemos mejorar esto?
¡Por supuesto!
Ahora que nuestros clientes “especiales” ya disponen de un descuento automático en sus compras, que mejor estrategia de marketing que decírselo, para que se sientan tan especiales como su descuento.
¿Te gustaría que sólo esos Clientes vean la tienda así? Puedes poner una etiqueta como esta en todos los productos, pero sólo cuando lo vean los clientes profesionales, es muy fácil.
Para esto disponemos de un fantástico plugin gratuito llamado “Advanced Woo Labels” que nos permite crear vistosas etiquetas en los productos, en función del Rol que las vea.
Descargamos el Plugin y lo instalamos.
Configurar Advanced Woo Labels
Configurar este plugin es tan sencillo e intuitivo que lo haremos en menos de un minuto.
Una vez instalado, nos aparece la pestaña “Adv. Woo Labels” en la columna izquierda, sólo tenemos que crear una nueva etiqueta haciendo Clic en “Add New“.
En Label Conditions, podemos escoger en que situaciones queremos que aparezca la etiqueta, yo para este caso he escogido que se vea cuando el User role o rol de usuario, sea igual a Customer o cliente, que es el Rol de los clientes profesionales.
Pero el plugin nos permite poner como condición: el Stock, cantidad de unidades disponibles, tipo de envío, producto, categoría y mucho más.
Ya sólo nos falta escoger el aspecto que tendrá la etiqueta y donde queremos que se vea.
Creación de Usuarios Profesionales
Ahora que Woocommerce asigna a los nuevos usuarios que se registran desde la web el nuevo Rol de Cliente online, vamos a ver como crear nuevos usuarios con el Rol de Cliente, que es el que se beneficia del descuento especial.
De forma manual
Aquí no hay secretos, desde nuestro Backoffice con la función nativa de WordPress: Usuarios/Añadir nuevo y teniendo la precaución de asignar el Rol de Cliente (o Customer en inglés).
De forma automática
Con un plugin como User Registration, que nos permite crear uno (o varios) formularios de registro con los que se crea una cuenta con el Rol que nosotros queramos.
Sólo tendríamos que ocultar la página donde se halla el nuevo formulario de registro, para que sólo pudieran acceder a ella ciertos visitantes.
Hacerlo todo con un Plugin
Pues si, hay una forma mas fácil de crear diferentes precios según el Rol de usuario, sobre todo si lo que necesitas es algo fácil y rápido para crear roles y asignar precios a productos (o reglas de comportamiento) sin complicarnos la vida.
Échale un vistazo a este Post y te lo explico.
¿Que te ha parecido el contenido de esta publicación?
Promedio de puntuación 5 / 5. Recuento de votos: 1
Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.