Ocultar precios a usuarios no registrados

En determinados tipos de tiendas online, sobre todo las que venden solo a empresas (B2B) necesitan ocultar sus precios hasta que los validen como usuarios o les den un rol para ello.

En medio de esto y para tiendas de cliente final hay un paso intermedio, que consiste en mostrar el precio solo a los usuarios que han accedido a su cuenta de usuario. Es decir deshabilitar el botón de añadir al carrito y precio a los invitados, para esto usaremos el siguiente código.

Añádelo a tu archivo functions.php de tu Child Theme o bien en tu plugin de funcionalidades como explico aquí.

add_filter( 'woocommerce_get_price_html', 'dl_ocultar_precio_anadir_carrito_no_login', 9999, 2 );
 
function dl_ocultar_precio_anadir_carrito_no_login( $price, $product ) {
   if ( ! is_user_logged_in() ) { 
      $price = '<div><a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">' . __( 'Necesitas estar registrado o haber accedido a tu cuenta para ver los precios', 'dl' ) . '</a></div>';
      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 );
   }
   return $price;
}

En este código puedes cambiar el texto de llamada a la acción que prefieras, lo llevará directamente a la pagina configurada de mi cuenta que tengas en WooCommerce. Resultado:

Si lo quieres hacer mediante un plugin simple y sencillo te recomiendo «Hide Price Until Login» de Cedcommerce haz click para descargar el plugin.

Fuente:  Diegol.top