Cómo ocultar los precios, y casi cualquier otra cosa, en WooCommerce

Ayer hablando con una amiga que tiene una ONG surgió el asunto de lo feo que queda en ocasiones que se vean los precios y rangos de precios en las páginas de WooCommerce, así que me puse manos a la obra a ver cómo ocultarlos y, por supuesto, compartirlo contigo para que también aprendas a hacerlo.

Y mira por donde no es difícil, y tenemos unas cuantas posibilidades.

¿Preparado para convertirte en un ninja de WooCommerce?

Ocultar precios solo en la tienda

Si solo quieres quitar precios en la página de tienda añade este código al archivo functions.php del tema (hijo) activo:

/**
 * Oculta precios de WooCommerce en la página de tienda
*/ 
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

Aquí tienes el antes y el después…

Oculta precios de todas partes menos en el carrito, la página de finalizar compra y producto

Por razones obvias no tiene sentido que no aparezcan los precios en el carrito y en la página donde se finaliza la compra, donde se pago, pero sí en el resto de páginas. Simplemente usa este otro código si quieres ocultar los precios en la tienda y en las páginas de categorías:

/**
 * Oculta precios de WooCommerce en la tienda y páginas de categorías
*/ 
add_filter( 'woocommerce_variable_sale_price_html', 'ayudawp_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'ayudawp_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'ayudawp_remove_prices', 10, 2 );
 
function ayudawp_remove_prices( $price, $product ) {
$price = '';
return $price;
}

Ocultar precios en la página del producto

Pero hay más, porque puede que tampoco quieras que aparezca la lista de precios, o variaciones, en la misma página de los productos, o en cualquier parte que aparezca un producto simple, como en los productos vinculados por ejemplo.

Si es tu caso el código a utilizar será este otro:

// Ocultar precios en los productos
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

Y esta es la diferencia…

Ocultar precios en todas partes

Un mix de todo lo anterior sería este código, con el que ocultamos los precios de todas partes menos del carrito y la página de pagos:

/**
 * Oculta precios de WooCommerce en la página de tienda y producto
*/
// Ocultamos los precios de la tienda y producto
add_filter( 'woocommerce_variable_sale_price_html', 'ayudawp_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'ayudawp_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'ayudawp_remove_prices', 10, 2 );
add_filter( 'woocommerce_template_single_price', 'ayudawp_remove_prices', 10, 2 );
 
function ayudawp_remove_prices( $price, $product ) {
$price = '';
return $price;
}

Ocultar más cosas de WooCommerce

Ah amigo, te ha entrado el gusanillo ¿eh? Pues debes saber que puedes quitar prácticamente casi cualquier cosa de WooCommerce, solo tienes que saber cuáles están disponibles y quitar el gancho.

Una guía visual de las acciones de una página de producto de WooCommerce sería esta:

Ya con la referencia anterior, solo te queda decidir qué acciones vas a quitar. Para ello, solo tienes que elegir lo que quieres ocultar de la siguiente lista de acciones y cambiar add_action  por remove_action  y añadir la línea elegida al archivo functions.php del tema (hijo por favor) activo.

La lista es esta:

// Acciones que puedes quitar
// Sustituye add_action por remove_action y añade la línea que quieras a tu functions.php
 
add_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 );
 
add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
 
add_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
 
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
 
add_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
add_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
add_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
add_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
 
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
 
add_action( 'woocommerce_review_before', 'woocommerce_review_display_gravatar', 10 );
add_action( 'woocommerce_review_before_comment_meta', 'woocommerce_review_display_rating', 10 );
add_action( 'woocommerce_review_meta', 'woocommerce_review_display_meta', 10 );
add_action( 'woocommerce_review_comment_text', 'woocommerce_review_display_comment_text', 10 );

De este modo si, por ejemplo, no quieres mostrar en la página del producto la lista de categorías y etiquetas, los elementos meta añadirías esto a tu plugin de funciones o archivo functions.php:

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );

¿A que no es difícil?

El límite es tu imaginación, y la API de WooCommerce claro. Quizás pensarás eso de «¿y no hay un plugin que haga estas cosas?«, y sí, algo hay por ahí, pero son taaaaaan limitados los que hay que no tendrás toda la libertad que te da el código, con lo que igual tiene que instalar 4 o 5 plugins para conseguir lo que lograrías con solo 3 líneas de código.

Y, además, que nunca está de más atreverse con un poquito de código y de paso aprender, crecer ¿no crees?

¡A jugarrr y personalizarrr!

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(23 votos, promedio: 4.7)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

53 comentarios en “Cómo ocultar los precios, y casi cualquier otra cosa, en WooCommerce”

  1. Hola Fernando.
    Excelente artículo, muy útil. Tengo una duda, ¿se podría quitar algún hook pero sólo de un producto específico?

    1. Muy buena pregunta, me apunto a la consulta ya que actualmente uso mi sitio para vender en dos paises y solo en uno de ellos se venden algunos productos. Junto con ello uso el plugin woocommerce currency switcher con el cual muestro los productos en dos monedas especificas pero quiero saber si hay manera de solo mostrar que un producto esta disponible para un pais y para otro no ocultando su precio de acuerdo a la moneda. Gracias!

  2. Otra pregunta, es posible ocultar cosas de la admin de woocommerce? por ahora lo hago con css, pero quizás existan hook para ello, mis búsquedas no han tenido éxito.

  3. Natalia Villa Pellicer

    Hola. Yo necesito quitar los precios pero solo en la página de categorías, no en la de tienda. He conseguido hacerlo, pero se me quita el precio en las dos. ¿como puedo hacer para que sólo se oculte el precio en la página de categorías?

    mil gracias!!

    1. Por favor alguien resolvió esto? Yo necesito quitar los precios sólo de algunas categorías mientras que en otras si quiero vender los productos online, las demás sólo como catálogo. Gracias!

  4. Eduardo García

    Me interesa cambiar el boton de comprar por llamar para reservar pero solo en algunos productos…
    ¿Sabéis si puede hacerse?

  5. Promociones ITS

    Gracias Fernando me han funcionado perfecto quitar precios, soy novato en WP y Complementos, sin embargo me falta quitar, cuando estás finalizando la compra, la columna de precio y total.

    Ya me se me esta poniendo blanco el bigote!!
    Gracias por tu ayuda.

  6. Me agrada haber encontrado este sitio, es muy didáctico.
    En mi caso, la necesidad es quitar la Descripción corta en la portada de la tienda. Me aparece por defecto, y me gustaría que solo apareciesen las imágenes, que fuera visual, sin ese texto.
    En la página de detalles sí que me hace falta, pero no en el Inicio.
    Agradezco cualquier ayuda.
    Un saludo.

    PD: por si sirve de algo, aquí va la web (aún me faltan por subir imágenes, lo que pretendo es eliminar esas tablas indispensables en el detalle del producto, pero molestas en este punto).
    http://speedrill.com/tienda/

  7. Me agrada haber encontrado este sitio, es muy didáctico.
    En mi caso, la necesidad es quitar la Descripción corta en la portada de la tienda. Me aparece por defecto, y me gustaría que solo apareciesen las imágenes, que fuera visual, sin ese texto.
    En la página de detalles sí que me hace falta, pero no en el Inicio.
    Agradezco cualquier ayuda.
    Un saludo.

    Por cierto, esto mismo que se refiere a la Página de producto (todas las opciones que has mostrado), ¿existe para la Shop Page?
    Muchas gracias.

      1. Creo que no he entendido la respuesta, Fernando. Lo que hay en la descripción corta es algo necesario para comprender el producto; no puedo prescindir de ella. Pero debe estar en el detalle, no en la portada de la tienda.
        Mi solución (al menos ha funcionado por ahora) ha sido comentar esta línea en el tema de Flatsome: woocommerce/content-product.php
        /** do_action( ‘flatsome_product_box_after’ ); */

  8. Y otra duda que me ha surgido, por si alguien puede iluminar. La Shop Page me ofrece por defecto productos «sueltos», ordenados en este caso por «más recientes». Pero, en mi caso, me convendría que fuera la página de Categorías, que los agrupa por dichas categorías de producto. Supongo, a botepronto, que tendré que tocar algo en «woocommerce/content-product.php». Pero no sé el qué.

  9. alejandro sierra

    Buenos Dias quisiera saber si hay la posibilidad de ocultar todos los productos y solo quede el buscador visible, en pocas palabras que solo sea visible el buscador y cuando realicen las búsquedas solo aparezca el producto o los productos relacionados, agradezco si me pueden colaborar con ello.

  10. Alvaro Martin Fernandez

    Hola muy buenas,
    Tengo una pregunta tengo un producto que es por tamaño 60 cm y 100 cm y color rojo y amarillo imaginemos que la opción de 100cm y amarillo no esta disponible, como puedo hacer que no pueda elegir esa opcion es decir al elegir el tamaño de 100cm la opcion de color amarillo desaparezca y no salga para elegir?

  11. Javier Rodrigo Celada

    ¿Hay alguna manera de eliminar la información del precio en el snippet de los artículos? No queremos que aparezca el precio al buscarlos en google, sin embargo cambiando manualmente el snippet en el Yoast no funciona, por lo que había pensado en esto…

    1. Eso son los rich snippets que genera por defecto WooCommerce, tendrías que inhabilitarlos, y ahora no he encontrado aún cómo hacerlo, pero lo estoy buscando

  12. Alvaro Martin Fernandez

    Hola, me gustaría saber como puedo ocultar solo los precios de una categoría de productos y dejar el resto visibles.

  13. Hola Fernando, tengo una duda. Quiero quitar las dos opciones de ordenamiento que aparece en el listado de productos de Woocommerce, tanto el de «Ordenar por» como el «Mostrar por» y hasta ahora no he encontrado la forma de hacerlo. Seguro que no es muy difícil pero, ¿me podrías iluminar?
    Gracias de antemano! Saludos.

  14. Raquel Sánchez Romo

    Excelente artículo, Fernando. ¿Es posible quitar el precio en productos gratuitos, en lugar de que salga » 0,00€ IVA incluido» con código? Gracias de antemano!!!

        1. Hola fernando intento para articulos que tengo con woocommerce booking y es un producto a precio 0€, me sale la palabra gratis.

          He probado a quitarlo con la opcion de elmiinar precios que das arriba, pero si lo hago asi lo elimino para todos los articulos.

          Como puedo hacer que se borre solo para los de woocommerce booking?

  15. Buenas tardes, en el footer tengo los 5 productos destacados, pero solo quiero que me salga el titulo y la imágen, no quiero que salga el precio. sabe como podría hacerlo?
    Muchas gracias, Buen artículo.

  16. Hola Fernando, gracias por el articulo.
    Yo tengo un problemilla con una web
    He instalado el plugin tal y como has explicado en los pasos y me ha ocultado los precios. Todo perfecto. Pero me gustaría que me aparezca un botón para consultar los precios como en esta web https://comparapop.com/mejores/olla-programable. Es posible hacer esto con un código y el plugin del tema hijo?

    Saludos y muchas gracias!

  17. Hola, este artículo es lo más parecido que he encontrado a lo que busco pero no he encontrado la solución, hay alguna forma de poner en formato diferente los precios de un artículo rebajado? por ejemplo, cuando muestras un artículo rebajado te sale el precio original tachado y el rebajado al lado, y lo que busco es que aparezca uno de los dos en color rojo. Gracias

  18. Gran aporte Fernando,

    Me ha surgido el mismo caso de tener que ocultar campos en woocommerce, pero en este caso en particular solo necesito ocultarlos para un rol en particular. Es posible añadiendo código tus lineas de mas arriba? conoces algún plugin que haga esta función?

    Muchas gracias 😉

      1. Hola Fernando, igual me exprese mal.

        Lo que quiero es ocultar ciertos elementos de la ficha de producto como puede ser el botón de comprar, precio, sku, etc, pero por Rol.

        Te pongo un ejemplo, tengo este fragmento de código que incluyo más abajo para ocultar el sku a usuarios no registrados, pero, ¿como podría ocultarlo para un usuario que esta logeado y tiene un determinado rol?

        Gracias 😉

        add_filter( ‘wc_product_sku_enabled’, function( $enabled ) {
        if ( is_user_logged_in() ) {
        return true;
        }
        return false;
        } );

  19. Hola!

    En primer lugar mi más sincera enhorabuena por vuestro trabajo. Nos sois siempre de gran ayuda!!

    Os escribo porque llevo varios días intentando aplicar cambios en los elementos de mi página de producto (woocommerce), en concreto: 1: quitar las información sobre “categorías”; 2: cambiar el orden de los elementos, básicamente poner el precio y el botón de “Añadir al carrito de la compra” después del resumen de producto y no antes.

    Para ello he creado un tema hijo (funcionando correctamente). Por más que introduzco en el archivo “functions.php” la siguiente línea de código para eliminar las categorías:

    remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_meta’, 40 );

    Por probar también he intentado quitar el título pero nada tampoco:

    remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_title’,
    5 );

    Igual pasa con las líneas de código para cambiar el orden de los elementos como:

    remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_add_to_cart’, 30 );
    add_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_add_to_cart’, 15 );

    En cualquiera de los casos me salen dichas líneas de código en la parte superior izquierda de la pantalla de la página de producto a modo de error. He seguido los pasos de media docena de tutoriales pero no doy con la tecla. Siento mi agonía pero ya no se qué más hacer. Te agradecería muchísimo que me pudieras echar un cable.

    Sin comromiso alguno! Mil gracias anticipadas!

    Un saludo!

    Rafael

  20. Muy gran Aporte Fernando!!! Gracias
    Solo te tengo una pregunta yo hice la ocultación de precios solo para clientes registrados, pero me he dado cuenta que en la cesta sin estar registrado aparecen los precios podrías echarme ayudarme gracias 😉

      1. Hola Fernando, muchas gracias por responder!!! 🙂
        Este es mi código

        //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_single_product_summary’, ‘woocommerce_template_single_add_to_cart_button’, 30 );
        remove_action( ‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10 );
        remove_action( ‘woocommerce_grouped_add_to_cart’, ‘woocommerce_grouped_add_to_cart’, 30 );
        remove_action( ‘woocommerce_variable_add_to_cart’, ‘woocommerce_variable_add_to_cart’, 30 );
        remove_action( ‘woocommerce_external_add_to_cart’, ‘woocommerce_external_add_to_cart’, 30 );
        remove_action( ‘woocommerce_single_variation’, ‘woocommerce_single_variation’, 10 );
        remove_action( ‘woocommerce_single_variation’, ‘woocommerce_single_variation_add_to_cart_button’, 20 );
        remove_action( ‘woocommerce_external_added_to_cart’, ‘woocommerce_add_to_cart’, 30 );
        remove_action( ‘woocommerce_external_adding_to_cart’, ‘woocommerce_add_to_cart’, 30 );
        return ‘VENTA SÓLO PROFESIONALES¡Regístrate para ver precios!‘;
        }
        }

        GRACIAS

  21. Miguel Garcia

    Buenas Fernando,

    He hecho que los precios de mi tienda sólo aparezcan si el usuario está logueado. He creado también una categoría de usuarios especial (Clientes VIP) y me gustaría saber si es posible crear un producto o una serie de productos que sólo fuesen visibles para éste tipo de clientes.

    Todos los usuarios logueados ven los productos y el precio, pero los productos «especiales» sólo pueden ser vistos por los «Clientes VIP».

    Es posible hacerlo? Me ilustras un poco.

    Mil gracias.

  22. Buenas, aunque la entrada es vieja… consulto, como hago para ocultar por ej. los precios de una «categoría» en particular?

      1. Hola Fernando y Joaquín, justo estoy con este caso donde requiero ocultar el precio de algunas categorías ya que esas sólo son como catálogo porque serán vendidas en la tienda física pero otras categorías si son para venta online. Gracias!

  23. Daniel Monagas

    Hola Fernando… Siempre vengo a tu página a buscar soluciones a mis problemas y en realidad, casi siempre consigo la respuesta… Pero en esta ocasión quisiera saber si existe la posibilidad de ocultar el precio de todas las páginas, incluyendo la del carrito. Esto, debido a que estoy creando una «tienda» tipo catálogo, que el cliente lo que quiere es que las personas le soliciten presupuesto.

    Lo pregunto, porque he logrado crear el presupuesto con un plugins que se llama NP Quote Request WooCommerce, que es muy bueno, pero no me habilita las opciones de solicitud de cotización cuando le coloco variables al producto como colores o tallas.

    Esta idea que tú das, creo que es la que me puede servir, pero quisiera saber si lo puedo aplicar para todas las páginas.

    Gracias.

  24. Hola, una pregunta, widget del carrito, cuando tengo un producto con varios atributos me los pone todos en el carrito y yo no quiero que salgan todos sino solo algunos, habria alguna manera de hacerlo?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido