Soporte » Plugins y Hacks » WooCommerce » ¿ Como iniciar sesión con roles de usuario diferentes ?

  • Resuelto miguelapps

    (@miguelappslaparra)


    Hola

    Estoy creando una tienda en la que tendremos tipos de clientes: usuarios y profesionales( serán precios de mayorista).

    Los precios por defecto que se verán en la tienda serán los precios de los «usuarios»

    El precio para cada uno de ellos sera diferente y quiero saber la forma de hacer que cada tipo de usuario (usuarios y profesionales) vea los precios que al el le corresponden cuando inicia sesión.
    El usuario puede iniciar sesión o incluso hacer un pedido sin tener cuenta, pero para el tema de los «profesional» deben registrarse mediante un código que recibirán cuando confirmemos sus datos. Esto sera necesario para verificar que son profesionales y de este modo poder aprovecharse de los precios más económicos

    No se como es posible hacer esto:

    • – Una función php
      – Modificando varios archivos archivos
      – Complementos
      – ¿ Necesito botones diferentes para el inicio de sesión?
    • Tengo idea de como funciona php, pero no soy capaz de crear una función para conseguir esto.

      Buscando soluciones encontré algún plugin de WooCommerce con el que se podría hacer esto, pero es de pago

      ¿ Como puedo conseguir que la tienda tenga precios diferentes para diferentes tipos de usuario ( usuarios y profesionales )?

      ¿ seria necesario tener botones diferentes para cada tipo de usuario ?

      ¿ necesito dos tiendas con precios diferentes ?

      No se como empezar si me dan alguna idea
      Gracias

    • Este debate fue modificado hace 2 meses por miguelapps.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • Hola @miguelappslaparra

    Me temo que tendras que crear un plugin para:
    1) Gestionar los dos tipos de clientes (normal/profesional) no te sugiero un plugin de roles porque podria liarse el WooCommerce.
    2) Segun el tipo de cliente modificar el WooCommerce para mostrar un precio.
    Por ejemplo crear dos campos en el producto para el precio y precio rebajado para asociarlo a los profesionales salvo que sepas que es por ejemplo un 10% menos para todos los productos y asi cuando lo consulte el WooCommerce cambiarlo por esos valores o le descuentas el porcentaje, obviamente el usuario debera tener un campo para diferenciarse entre normal y profesional.

    Saludos y suerte

    Iniciador del debate miguelapps

    (@miguelappslaparra)

    Gracias @kallookoo , la teoria suena muy bien.
    creo que aún debo estudiar mucho para conseguir eso.
    Seguire buscando si encuentro un curso o tutorial para aprender a crear mis plugins.
    Gracias

    Hola @miguelappslaparra

    Hacer un plugin es sencillo, tienes info aqui; https://developer.wordpress.org/plugins/ (En Ingles)

    Necesitas un encabezado valido para que WordPress lo detecte y luego crear tu codigo, personalmente cuando son dos lineas uso functions dentro del archivo principal. Para algo mas complejos ya uso clases y una extructura asi:
    plugin-name
    – assets
    — css
    — js
    – includes
    — admin
    — class-name.php
    — class-name.php
    – languages
    – plugin-name.php

    El problema que te encuentras al principio y despues tambien sinceramente son los hooks, ya que existen muchos para cada cosa tanto para el WordPress como el WooCommerce y no siempre funcionan como uno quiere, que normalmente es porque se declaran erroneamente o no es ese action or filter que tambien puede pasar.

    Saludos y suerte

    • Esta respuesta fue modificada hace 1 mes, 3 semanas por kallookoo.
    Iniciador del debate miguelapps

    (@miguelappslaparra)

    Gracias de nuevo @kallookoo . me estas motivando a coger un camino que en principio no queria (php) pero que por necesidad estoy empezando a descubrí y me esta gustando.
    Claro que esto llevara su tiempo, y ahora necesito crear estas funciones.
    He visto plugin pero son Premium.
    Un amigo me a echo una función con la que poder empezar, partiendo de un articulo que encontro:

    function my_get_current_user_roles() {
      if( is_user_logged_in() ) {
        $user = wp_get_current_user();
        $roles = ( array ) $user->roles;
        return $roles; // This will returns an array
      } else {
        return array();
      }
    }
    
    function custom_price_message( $price ) { 
     global $post; 
     $product_id = $post->ID; 
     $roles = my_get_current_user_roles();
     $textafter = "";
     if(!empty($roles)) { 
    	if (in_array("TYPE_ROLE_1", $roles)) {
    		$textafter = 'TEXT_TYPE_ROLE_1'; //texto que vamos agregar 
    	}
    	if (in_array("TYPE_ROLE_2", $roles)) {
    		$textafter = 'TEXT_TYPE_ROLE_2'; //texto que vamos agregar 
    	}
     } 
     return $price . '' . $textafter . ''; //class textafter para el  
    } 
    add_filter('woocommerce_get_price_html', 'custom_price_message');
    • Esta respuesta fue modificada hace 1 mes, 3 semanas por miguelapps.

    Hola @miguelappslaparra

    Ese codigo esta bien si quieres añadir algo despues del HTML del precio.
    No modifica para nada el valor del precio.
    Existen algunos filtros dinamicos como por ejemplo woocommerce_product_get_price que devuelve el precio del producto actual (Sale Price or Regular Price)

    Iniciador del debate miguelapps

    (@miguelappslaparra)

    Claro, esta función es para modificar el prefijo que lleva el precio dependiendo del rool de usuario.
    Creo que hemos encontrado un Plugin que podría valer para mis necesidades.
    Estoy haciendo algunas pruebas, pronto te pido tu opinión @kallookoo a ver que me aconsejas

    • Esta respuesta fue modificada hace 1 mes, 3 semanas por miguelapps.
    Moderador Jose Luis

    (@jose64)

    Hola.

    En el repositorio tienes un plugin que creo que es justo lo que necesitas:

    Product Prices by User Roles for WooCommerce

    Por supuesto, dependiendo de tus necesidades es posible que tengas que usar la versión comercial, pero la que tienes en el repositorio te puede servir para hacer pruebas.

    También tienes otro plugin, este comercial, en la tienda oficial de WooCommerce:

    Role Based Pricing for WooCommerce

    Quedamos pendientes también de tus pruebas, coméntanos los resultados. Recuerda marcar el debate como resuelto cuando así sea, de esta forma nos ayudas a mantener el foro al día.

    Iniciador del debate miguelapps

    (@miguelappslaparra)

    Gracias @jose64 .
    He visto varios plugin premium que por ahora no tengo intención de utilizar.
    Precios de productos por roles, no lo vi aún.
    Déjame revisar y hos digo los resultado, unicamente estoy esperando si alguien daba más ideas. Pero ya hace dias que hice la pregunta y no recibo respuestas útiles. Déjame ver tu propuesta.
    Gracias

    Iniciador del debate miguelapps

    (@miguelappslaparra)

    Buenas.
    Pues revise el debate señor @jose64 , creo que podemos darle por cerrado.
    Finalmente he encontrado algo que puedo servir para mi pretensiones.
    Es un plugin gratuito con versión premium, con la que yo voy a funcionar por el momento.
    Se llama Wholesale Suite – WooCommerce Wholesale.
    Debo decir, que te crea un rool para mayoristas en que añadir un precio rebajado.
    En este caso es precio fijo, en la versión Premium tienes funcionalidades para cambiar el precio en porcentaje, etc…
    Tambien tuve que incluir una función para cambiar el texto detrás del precio dependiendo del rool del usuario.
    Se la dejo por aqui

    Gracias a los colaboradores que tuve, me motivaron en mi búsqueda.
    Gracias @kallookoo y a @jose64 que siempre esta dispuesto

    function my_get_current_user_roles() {
        if( is_user_logged_in() ) {
            $user = wp_get_current_user();
            $roles = ( array ) $user->roles;
            return $roles; // This will returns an array
        } else {
            return  array();
        }
    }
    
    function custom_price_message( $price ) { 
        global $post; 
        $product_id = $post->ID; 
        $roles = my_get_current_user_roles();
        $textafter = "";
        if(!empty($roles)) { 
            if (in_array("Wholesale Customer", $roles)) {
                $textafter = 'P.V.M.'; //texto que vamos agregar 
            }
            if (in_array("customer", $roles)) {
                $textafter = 'P.V.P.'; //texto que vamos agregar 
            }
        }
        else{
            $textafter = ' P.V.P.'; // Or whatever you want
        }
        return $price . '' . $textafter . ''; //class textafter para el  
    } 
    add_filter('woocommerce_get_price_html', 'custom_price_message');
    • Esta respuesta fue modificada hace 1 mes, 3 semanas por miguelapps.
Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • Debes estar registrado para responder a este debate.