Quitar el intervalo de precios en Woocommerce

webempresa woocommerce diegol

Seguimos con la nueva sección de snippets para Woocommerce, hoy descubriremos como quitar el molesto intervalo de precios que aparecen en los productos variables. Con esto conseguirás una ficha de producto mucho mas optimizada.

Si el precio es diferente en las variables saldrá algo así:

Esto confunde al cliente, puesto que, no sabe que se va a gastar en este producto. Además si lo ve desde el catálogo puede que no entre pensando que el precio es el más caro.

Cambiar el intervalo de precios en Woocommerce sin plugin

Lo ideal en estos casos es que se muestre el precio de la variación mas barata, acompañado de un texto explicativo. Como puede ser «Desde 8,49» o «A partir de»… Al igual que hacen las tiendas físicas.

Vete a tu Cpanel, FTP o en apariencia editor de temas y en el archivo functions.php de tu tema inserta al final el siguiente código:

// Quitar intervalo de precios por diegol.top
function diegol_variacion_precio_formato( $price, $product ) {
    // Precio Normal
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    // Precio Rebajado
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Desde/A partir de: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    if ( $price !== $saleprice ) {
        $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
    }
    
    return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'diegol_variacion_precio_formato', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'diegol_variacion_precio_formato', 10, 2 );

Recuerda que puedes cambiar el título a partir de/desde desde la zona del código. ¡Aunque puedes poner el texto que prefieras!

Intervalo con IVA

Si tu tienda ofrece los productos con IVA incluido en WordPress te dejo el siguiente código con el añadido:

// Quitar intervalo de precios con IVA por diegol.top
 function diegol_variacion_precio_formato( $price, $product ) {
     // Precio Normal
     $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
     $price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde: %1$s I.V.A Incluído', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 // Precio Rebajado $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) ); sort( $prices ); $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Desde: %1$s I.V.A Incluído', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] ); if ( $price !== $saleprice ) {     $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>'; } return $price;
 }
 add_filter( 'woocommerce_variable_sale_price_html', 'diegol_variacion_precio_formato', 10, 2 );
 add_filter( 'woocommerce_variable_price_html', 'diegol_variacion_precio_formato', 10, 2 );

Si quieres escribir el IVA con otro texto, ve a la zona del código y cambia el texto que aparece en el IVA incluído y aparecerá igual en tu ecommerce.

Insertándolo en el ejemplo anterior quedaría así:

quitar el intervalo de precios sin plugin widget

Mostrar solo el precio más alto

También podemos añadir este código si queremos mostrar solo el precio de la variación más alta:

add_filter( 'woocommerce_variable_sale_price_html', 'diegol_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'diegol_variation_price_format', 10, 2 );
 
function diegol_variation_price_format( $price, $product ) {
 
// Precio base
$prices = array( $product->get_variation_price( 'max', true ), $product->get_variation_price( 'min', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'Hasta: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
// Precio rebajado
$prices = array( $product->get_variation_regular_price( 'max', true ), $product->get_variation_regular_price( 'min', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Hasta: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>';
}
return $price;
}

¿Mucho más práctico y usable no? Y estoy seguro que no te ha costado nada. Si tienes problemas no dudes en contactarme y te lo solucionaré encantado!

Videotutorial

También puedes proponerme más Snippets y funciones en Woocommerce, aunque revisa antes si ya lo tengo hecho en la sección de Snippets para Woocommerce.

Recordarte si que si quieres aplicar estas cosas a tu WooCommerce en mi servicio de desarrollo de tiendas en línea lo puedes tener.

¡Haz clic para puntuar esta entrada!
(Votos: 3 Promedio: 5)

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

Reader Interactions

comentarios

  1. aldo says

    hola es posible que al colocar este código no se pierda el sufijo? (en mi caso es «+iva»)
    y mi otra consulta es que el codigo sirve en el producto individual pero no en la tienda ya que sigue mostrando los intervalos

    • Diegol says

      Buenas Aldo, con el código tiene que salir igual en la ficha que en el catálogo de la tienda y demás, sino revisa si tu theme tiene otra configuración.

      En el caso del IVA es cierto, actualizo el artículo para que sepas como ponerlo. Gracias por fijarte y cualquier duda extra coméntame!

  2. Pilar says

    Buenos días, Diego.
    Quería preguntarte, y si no se quiere poner lo de DESDE.
    Es decir que se vea el precio más económico pero sin el texto Desde.

    ¿Qué habría que cambiar en el código que indicas arriba?

    Muchas gracias por tus aportaciones, son de gran utilidad.

    un saludo

    • Diegol says

      Muchas gracias por tus palabras Pilar.

      Deberías quitar las zonas de testo donde pone Desde o a partir de… pero sin la variable numeral. Igualmente te lo dejo aquí sin el desde:

      // Quitar intervalo de precios por diegol.top
      function diegol_variacion_precio_formato( $price, $product ) {
      // Precio Normal
      $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
      $price = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

      // Precio Rebajado
      $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
      sort( $prices );
      $saleprice = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

      if ( $price !== $saleprice ) {
      $price = '' . $saleprice . ' ' . $price . '';
      }

      return $price;
      }
      add_filter( 'woocommerce_variable_sale_price_html', 'diegol_variacion_precio_formato', 10, 2 );
      add_filter( 'woocommerce_variable_price_html', 'diegol_variacion_precio_formato', 10, 2 );

    • Diegol says

      Hola Sebastián,

      Gracias por tu comentario, he actualizado el post para mostrar el precio máximo del intervalo de un producto variable en WooCommerce, ya que en comentario no se quedaba bien.

      Un saludo!

  3. Olber says

    Hola Diego! Genial aporte! Por algún motivo cuando actualizo los precios, a unos nuevos, me sigue apareciendo desdepues del desde, el precio que tenía anteriormente luego de actualizar. Como soluciono esto? Ya borré cache y todo… Gracias!

Deja una respuesta

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