Buenos días,
Estamos editando la web en wordpress, y necesitamos un plugin para los registros.
Para poder ver los precios, el cliente se tiene que registrar, pero antes nosotros tenemos que autorizar a esa persona si puede registrarse para ver dichos precios.
actualmente en Joomla, estamos utilizando el Comunity builder. Hemos mirado algún plugin pero son de pago, sabéis de alguno que sea gratuito?
Muchas gracias,
Feliz día.
Contenido solo visible a usuarios registrados
Hola Rebeca.
Por lo que veo lo que quieres es que lso usuarios cuando se registren no tengan acceso hasta que no los valides y no puedan ver lso precios.
Lo primero vamos a crear un nuevo rol que sea pendiente y a los usuarios que se registren se le asigne ese nuevo rol:
.- Edita el archivo functions.php y añade lo siguiente:
///////////////////////////////
// 1. Añadimos nuevo Rol
add_role( 'pending', __( 'Pendiente' ), array(
'read' => true,
));
///////////////////////////////
// 2. Asignamos el nuevo rol
add_filter( 'woocommerce_new_customer_data', 'we_assign_custom_role' );
function we_assign_custom_role( $args ) {
$args['role'] = 'pending';
return $args;
}
Ya tenemos creado ese nuevo rol ahora nos toca eliminar los precios y el botón de añadir al carrito:
Debajo del código anterior añade lo siguiente:
// 3. Le eliminamos 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 '';
}
}
Una vez tengas comprobado que el usuario es un profesional solo tienes que cambiar el rol de usuario a " Customer "
Recuerda realizar una copia del archivo functions.php antes de añadir el código.
Un saludo
Buenas tardes Pepe,
Lo de añadir los códigos, lo entiendo, pero cuando dices de cambiar el rol a customer... este paso me he perdido.
Tendría que añadir algún plugin para registros? o ya existe alguno ya instalado ?
gracias.
Hola Rebecca,
En este caso no hace falta ningún plugin de registro, con los codirigid una ves los añadas y compruebes el usuarios solo debes modificarlo y cambiar si rol como customer para que pueda acceder y ver los precios
Un Saludo
Hola Rebeca.
no, no tienes que instalar nada.
Cuando un usuario se registre pro defecto se le asignara el rol Pendiente, uan vez que revises toda su documentación y compruebes que el usuario es un profesional solo tienes que editar ese usuario y cambiar el rol a " Customer "
.- Accedes a usuarios y editas el usuario al que quieres modificar el rol.
.- Despliegas la opción de perfil y modificas el rol de ese usuario:
Por defecto siempre se registran con el perfil " Pendiente " y en ese perfil no se muestra el botón de añadir al corro ni los precios con lo cual el usuario podrá acceder pero no podrá ver lso precios ni podrá comprar hasta que no se cambie el perfil del usuario a " customer " o " Cliente " que es el perfil por defecto del comprador.
Para el registro se utiliza la pagina de registro del propio WooCommerce.
Un saludo
Hola Pepe,
Hemos añadido los códigos, pero aun seguimos viendo los precios aunque no estemos registrados... puede ser que se nos pase algo a nosotros?? lo hemos probado en modo incognito... pero nada 🙁
Hola Rebecca,
En este caso probemos lo siguiente, elimina el código que añadiste anteriormente y añade el siguiente
add_action( 'init', 'bbloomer_hide_price_add_cart_not_logged_in' );
function bbloomer_hide_price_add_cart_not_logged_in() {
if ( ! is_user_logged_in() ) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
add_action( 'woocommerce_single_product_summary', 'bbloomer_print_login_to_see', 31 );
add_action( 'woocommerce_after_shop_loop_item', 'bbloomer_print_login_to_see', 11 );
}
}
function bbloomer_print_login_to_see() {
echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Inicie sesión', 'theme_name') . '</a>';
}
Este código lo que hará es ocultar los precios a los usuarios no se encuentren logueados en el sitio web
Luego de ello añade el siguiente plugin -> https://wordpress.org/plugins/new-user-approve/ solo debes instalarlo y activarlo con el podrás aprobar cuales usuarios puedes tener una cuenta, una ves lo activas y un usuario se registra veras el listado de usuarios a aprobar en el apartado Usuarios -> Aprobar nuevos usuarios
De esta forma hasta que el usuario no sea aprobado no podrá iniciar sesión y ver los precios
Comprueba si con ello logras añadir lo que deseas
Un Saludo
Buenos días,
Hemos borrado el código anterior y añadido el que nos diste pero siguen apareciendo los precios, lo hemos probado en incognito y en diferentes ordenadores, por si las cookies nos detectaba pero también aparecen los precios...
el pluguin si funciona 🙂
Gracias.
Hola Rebeca.
Ok, empecemos desde cero, si quieres deja el plugin de registro.
.- Instala el siguiente plugin:
-> https://es.wordpress.org/plugins/user-role-editor/
.- Accede a Usuarios -> User Role Editor
.- Selecciona " Añadir Perfil "
.- Crea un perfil que sea Profesional ( Puedes poner el nombre que quieras ) y que sea una copia del perfil Suscriptor
Una vez tengas el perfil creado si quieres puedes eliminar ese plugin.
.- Instala el siguiente plugin:
-> https://es.wordpress.org/plugins/price-by-user-role-for-woocommerce/
Una vez instalado.
.- Accede a WooCommerce -> Ajustes -> Precios De Productos Por Perfiles De Usuario
.- Selecciona " por producto y añades el nuevo rol que creaste:
.- Edita uno de los productos:
Veras que tienes un bloque " precios del producto por perfiles:
Añade el precio en ese bloque y lo eliminas de los datos del producto.
Prueba lo que te indico y nos comentas los resultados.
Un saludo
Buenas Pepe,
He probado de instalar los plugins tal y como me dijiste, pero no me aparecen las secciones como en tus capturas, te adjunto pantallas para que lo visualices mejor.
no me aparece la pestaña de añadir perfil (plugin user role edition)
y en el plugin de Produts Price by User roles... el apartado de precios del productos por perfiles no está....
los codigos css que me dijiste anteriormente los he eliminado (supongo que con estos plugins no son necesarios no?)
gracias.
Buenas Pepe,
Finalmente me lo miré detenidamente, y hemos conseguido que no se vean los precios de los productos hasta que el cliente no lo aprobamos antes
es decir que funciona!!
Muchas gracias y perdona por el lio...jeje
Hola Rebeca.
jejejej que bueno..... me alegra muchísimo Amiga !!!!!!!!!
Una cosita..... Nos dejas una reseña para el foro ? 😉
TrustPilot: https://es.trustpilot.com/evaluate/webempresa.com
Nos ayudaría a que otr@s usuarios se decidan por nosotr@s si saben lo que nos decís.
Gracias de parte de todo el equipo. 🤗
Hola Rebecca,
Muchas gracias, siempre encantados en poder ayudarte 🤗
Escríbenos si tienes cualquier otra consulta
Un Saludo 😊