En determinados tipos de tiendas online, sobretodo las que venden solo a empresas(B2B) necesitan ocultar sus precios hasta que los validen como usuarios o les den un rol para ello(esto lo explicamos en este tutorial).
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 disponible en el repositorio oficial de WordPress o bien en este enlace.
Deja una respuesta