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