• Resuelto Laura N

    (@tallerwp)


    ¿Alguien sabe de un plugin para poder validar usuarios que se registran en mi Woocommerce?
    No quiero que se pueda registrar cualquiera, quiero yo validar o denegar el registro.

    ¿Conocéis algo?

    Gracias

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador LGrusin

    (@lgrusin)

    No he entendido lo que quieres hacer. ¿Cómo compran si no pueden registrarse?

    Un saludo

    Moderador jose64

    (@jose64)

    Hola @lgrusin, creo que entiendo lo que quiere, Laura N (@tallerwp), me imagino que lo que quieres es controlar el acceso a tu tienda para determinado perfil de cliente. Puedes hacerlo así:

    • Cambiar el rol que se le asigna al usuario cuando se registra por uno personalizado y luego modificarlo según tu conveniencia.
    • Limitar la funcionalidad de la tienda para el usuario nuevo.

    Para la primera parte tendrías que crear un rol nuevo para los nuevos usuarios, aquí te dejo un enlace donde te explican como hacerlo:

    WooCommerce: Change User Role for New Customers.

    Funciona perfectamente, crea el usuario con el rol que decidas y posteriormente lo cambias manualmente o lo eliminas. Vamos a suponer que tu le asignas el rol «pendiente» para seguir y no liarnos.

    Para la segunda parte filtras que pueden ver los usuarios de la tienda de acuerdo al rol que tengan. Tienes que eliminar el botón de añadir al carrito con los filtros:

    • remove_action( ‘woocommerce_after_shop_loop_item’, ‘woocommerce_template_loop_add_to_cart’ )
    • remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_add_to_cart’, 30 )

    Y si quieres eliminar los precios también:

    • remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_price’, 10 );
    • remove_action( ‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10 )

    Resumiendo:

    // 1. Creas el rol "Pendiente"
    add_role( 'pending', __('Pendiente' ),array(
    'read' => true, 
    )
    );
    // 2. Le asignas el rol "Pendiente" a los nuevos usuarios
    add_filter('woocommerce_new_customer_data', 'assign_custom_role', 10, 1);
     
    function assign_custom_role($args) {
      $args['role'] = 'pending';
      return $args;
    }
    
    // 3. Le eliminas el los precios y añadir al carrito a los que no tienen acceso
    add_action('after_setup_theme','user_activate_filter') ;
    function user_activate_filter(){
    add_filter('woocommerce_get_price_html', 'user_show_price_logged');
    }
    function user_show_price_logged($price){
    
    if(current_user_can('customer') or current_user_can('editor') or current_user_can('shop_manager') or current_user_can('administrator') ){
    return $price;
    } else {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    return '';
    }
    }
    

    Los visitantes de tu tienda la ven como un catálogo de productos, cuando un usuario se registra te aparece como «Pendiente» en la lista de usuarios y sigue viendo la tienda como un catálogo hasta que tu le cambias el rol a «Cliente» (customer), que es cuando puede empezar a comprar.

    Puedes poner el código en el archivo functions.php de tu tema o crear con el un plugin personal.

    Si tienes alguna duda o no es lo que buscabas pregunta de nuevo, pero si lo tienes claro y la respuesta te sirvió, por favor cierra el debate marcándolo como resuelto.

    Saludos

    Iniciador del debate Laura N

    (@tallerwp)

    @jose64 eso es José,

    Voy a probar esto que comentas.

    Gracias por currarte la respuesta, a ver si lo consigo hacer así.

    Un saludo!

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Plugin para validar usuarios’ está cerrado a nuevas respuestas.