WooCommerce mostrar precios solo a usuarios registrados

WooCommerce mostrar precios usuarios registrados

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.

9 thoughts on “WooCommerce mostrar precios solo a usuarios registrados

  1. excelente aporte!

    Ahora propongo otro caso, quiero que no se muestren precios:
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

    Pero si quiero que me permita añadir a la cesta, he comentado estas dos líneas:
    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 );

    Se puede hacer que en la página del carrito se muestren los productos sin precio y nos de la opción en ese momento de crear una cuenta para poder acceder a precios y al checkout final?

  2. Saludos amigos.
    Observo que colocando el código:
    return 'Venta exclusiva a profesionales. Contacta con nosotros si quieres ser distribuidor de nuestros productos';

    La frase solo aparece en el primer producto de mi catálogo, quisiera que apareciera en cada uno de los productos. Qué debo hacer?

    Gracias de antemano

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies