A estas alturas todos tenemos claro el potencial y la flexibilidad de WooCommerce como plataforma de venta online. Es sin duda la mejor opción para montar un comercio electrónico sin necesidad de disponer de muchos recursos ni conocimientos técnicos.
Pero ¿qué ocurre cuando eres un mayorista y quieres que los precios solo los puedan ver tus clientes?
Recientemente me vi en la situación de que un cliente quería mostrar todos sus productos online con información detallada de cada uno de ellos, pero no quería que se vieran los precios. Únicamente los usuarios registrados, a los ellos previamente habían dado de alta, podían tener acceso a los precios y a la compra de productos. No es un caso habitual, pero de vez en cuando se da.
En este artículo mostraré un sencillo truco para ocultar los precios y los botones de compra excepto para los usuarios que están dados de alta en la página web.
Mostrar precios solo a usuarios registrados con WooCommerce
Hacerlo es tan sencillo como añadir las siguientes líneas de código al archivo functions.php de tu theme activo o mejor aún en un plugin de funcionalidades que puedes crear y en que puedes añadir esta funcionalidad y otras muchas.
En ambos casos funcionará bien, la diferencia es que los elementos de tu archivo functions.php solo se ejecutan en el tema y cuando lo cambiamos por otro la funcionalidad desaparece, mientras que los plugins se ejecutan independientemente del tema siempre que se encuentre activo.
El código a incluir es el siguiente:
//Ocultar precios a usuarios no registrados add_action('after_setup_theme','sauco_activate_filter') ; function sauco_activate_filter(){ add_filter('woocommerce_get_price_html', 'sauco_show_price_logged'); } function sauco_show_price_logged($price){ if(is_user_logged_in() ){ 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 ); } }
Si además quieres incluir un texto indicando que los precios solo están disponibles para usuarios registrados deberas añadir las siguientes líneas al código
return 'Venta exclusiva a profesionales. Contacta con nosotros si quieres ser distribuidor de nuestros productos';
Con lo que el código definitivo sería el siguiente:
//Ocultar precios a usuarios no registrados add_action('after_setup_theme','sauco_activate_filter') ; function sauco_activate_filter(){ add_filter('woocommerce_get_price_html', 'sauco_show_price_logged'); } function sauco_show_price_logged($price){ if(is_user_logged_in() ){ 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 'Venta exclusiva a profesionales. Contacta con nosotros si quieres ser distribuidor de nuestros productos'; } }
Como podéis ver es un truco muy sencillo pero al mismo tiempo muy efectivo.