Si trabajas con productos variables en Woocommerce, y en las variaciones utilizas diferentes precios, habrás observado que en el precio de los productos se muestra un intervalo de precios en vez de un precio único.
Este intervalo de precios se muestra tanto en las fichas de producto como en las páginas de categorías.
Aquí puedes ver el intervalo de precios en categorías de Woocommerce
Aquí puedes ver el intervalo de precios en un producto
DISFRUTA DE TODOS MIS CURSOS PREMIUM POR SOLO 10€/MES
ÍNDICE QUITAR INTERVALOS PRECIOS WOOCOMMERCE
1.- Razones por las que mostrar este intervalo de precios NO es la mejor opción
Lo cierto es que ese intervalo o rango de precios que se muestra en Woocommerce, puede ser bastante “mosqueante” para el usuario por varios motivos:
- a.- Por que el ver varios precios es algo que, de primeras, no cuadra al visitante.
- b.- Si el intervalo de precios es muy grande, el usuario ve un precio muy económico junto a un precio muy alto, y esto es algo que siembra la confusión y desconcierta al usuario, en un primer momento.
Aunque el usuario posteriormente analice la situación y entienda que es un intervalo de precios, es posible que si en un primer momento se siente confundido, directamente abandone la tienda online.
Tal vez lo ideal tampoco sería mostrar el precio más bajo a secas. Sino que se debería mostrar un texto del tipo: “Desde 50 €” o “A partir de 50 €”.
Vamos a ver a continuación, diferentes opciones para eliminar ese intervalo de precios en Woocommerce y sustituirlo por el precio más económico del intervalo.
2.- Plugin: “Quitar intervalo de Precios” para Woocommerce
Vamos a ver en primer lugar, cómo podemos quitar este intervalo de precios utilizando un plugin.
En este caso, te traigo un plugin de Enrique J Ros, muy económico, que tiene un precio de 4,99€ y que se llama “Quitar intervalo de precios”.
El plugin nos va a permitir quitar el intervalo de precios y personalizar el texto que queremos que se muestre en su lugar.
Una vez instalado y activado el plugin, la personalización la puedes realizar desde: “Ajustes > Intervalo de precios”
Ahí se te mostrará un campo de texto en el que podrás personalizar el texto que quieras. Debes tener en cuenta que la variable %precio% corresponde al precio más bajo del intervalo.
->Es decir, para poner “Desde 50€”, has de poner:
Desde %precio%
->Para poner “A partir de 50€”, has de poner:
A partir de %precio%
Así de fácil.
->IR AL PLUGIN QUITAR INTERVALOS DE PRECIOS
3.- Código: Quitar intervalo de precios en Woocommerce añadiendo código
Vamos a ver ahora, cómo podemos sustituir el intervalo o rango de precios para productos variables en Woocommerce, por un precio único, a través de código.
El código que te voy a pasar lo puedes añadir a tu wordpress de varias maneras:
a.- Añadir el código al final del archivo functions.php: esta es la peor forma de añadir el código, ya que al actualizar la plantilla tendrás que volver a añadir el código.
En este caso, debes buscar este archivo dentro de los archivos de tu plantilla y añadir el código al final del archivo.
b.- Añadir el código en el archivo functions.php de nuestro tema hijo: esta es una buena opción, ya que al actualizar la plantilla no se perderá el código. No es tan perfecta como las siguientes opciones, que independizan el código de la plantilla, pero es una buena opción.
En este caso tendrás que añadir el código al archivo functions.php dentro de tu tema hijo o child theme.
c.- Añadir el código en nuestro plugin personalizado de funciones: esta es una opción también muy interesante y optimizada. Pero, antes debemos crear y poner en marcha el plugin personalizado de funciones.
Luego añadiremos el código en el archivo del plugin.
En este post de Ángel Martín tienes más info sobre como crear este plugin personalizado de funciones
d.- Añadir el código con un plugin como code Snippets: esta solución también es muy interesante, ya que independizamos la plantilla de estos códigos.
Para añadir el código usaremos un plugin como code Snippets
En este post de DecodeCMS tienes info de cómo funciona code Snippets
El código que vamos a utilizar ha sido obtenido del publicado por Gehard Potgieter en su blog, y luego modificado para sustituir el intervalo de precios en Woocommerce por los siguientes posibles textos:
NOTA: Si quieres personalizar tu propio texto, fíjate que la diferencia entre los siguientes códigos está en 2 líneas. Fíjate en las dos líneas donde aparece 'Desde %1$s'
Ahí es donde has de realizar la personalización.
Vamos a ver cómo quedaría con la opción 3.2
Anque aquí te muestro la ficha de producto, también cambiaría el precio en los productos de las categorías.
NOTA: El cambio de «A partir de 29,00 €» también te debe aparecer en la página de categorías de productos y no solo en la ficha de producto.
3.1.- Código para sustituir intervalo de precios por: “Desde 50€”
/**
* Use WC 2.0 variable price format, now include sale price strikeout
*
* @param string $price
* @param object $product
* @return string
*/
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$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] );
// Sale Price
$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', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '' . $saleprice . ' ' . $price . '';
}
return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
3.2.- Código para sustituir intervalo de precios por: “A partir de 50€”
/**
* Use WC 2.0 variable price format, now include sale price strikeout
*
* @param string $price
* @param object $product
* @return string
*/
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'A partir de %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'A partir de %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', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
3.3.- Código para sustituir intervalo de precios por: “Desde 50 € IVA inc.”
/**
* Use WC 2.0 variable price format, now include sale price strikeout
*
* @param string $price
* @param object $product
* @return string
*/
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde %1$s IVA Inc.', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$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 IVA Inc.', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '' . $saleprice . ' ' . $price . '';
}
return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
3.4.- Código para sustituir intervalo de precios por: “A partir de 50 € IVA inc.”
/**
* Use WC 2.0 variable price format, now include sale price strikeout
*
* @param string $price
* @param object $product
* @return string
*/
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'A partir de %1$s IVA Inc.', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'A partir de %1$s IVA Inc', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '' . $saleprice . ' ' . $price . '';
}
return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
Me encanta el diseño web y el mundo del ecommerce. Apasionado de Prestashop, Woocommerce/Wordpress y de la formación. Me gustaría que este blog te sirviera de ayuda para poner en marcha e ir mejorando y evolucionando tu tienda online. Ya seas un profesional del sector o no, seguro que encontrarás mucha información de valor e interés aquí.
Tendrás el código para que no muestre nada de nada..? sólo para los productos con precio variable, sin que afecte a los productos con precio simple..!
Gracias de antemano por tu excelente trabajo.
Hola Marcos.
Lo siento, pero no tengo el código para eso.
Me gustaría también invitarte a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress,Curso Blog WordPress, Curso Woocommerce, Curso seguridad y actualizaciones en wordpress, Curso como crear una tienda online de éxito, Curso Woocommerce, Curso SEO, Curso SEO Tiendas online categoríasm Curso Divi, Curso Flatsome, Curso Elementor, Curso Prestashop, Curso Shopify, Curso alta e indexación web en google, cursos Analytics ecommerce, Curso como gestionar un blog, SEO general, SEO tiendas online, Curso copywriting, plantillas wordpress como flatsome, etc… (Más de 30 cursos y cada mes un recurso caduco o master class)
Hola! Gracias por compartir esta información. Al poner el código, consigo efectivamente que en mi caso, se queda el precios desde …. € pero solo en los productos, ¿cómo he de hacer para que este cambio afecte también en la página de categorías donde aparecen listados todos los productos? Gracias.
Hola Laura.
Como puedes ver al final del vídeo (minuto 11:23), en este mismo post. Con el código también te debería aparecer el cambio en las páginas de categorías.
Me gustaría también invitarte a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress, Curso como crear una tienda online de éxito, Curso Woocommerce, Curso Prestashop, Curso Shopify, Curso alta e indexación web en google, cursos Analytics ecommerce, SEO general, SEO tiendas online, Curso copywriting, plantillas wordpress como flatsome, Divi, Astra pro, curso Shopify, etc. etc.
Este código quita las variaciones de precio sí, pero que ocurre cuando tenemos variaciones de producto con el mismo precio junto con otras que sí lo tienen? A mí me está ocurriendo esto y a los productos con diferentes tallas y mismo precio les quita «iva incluido» ¿Habría alguna forma de solucionar esto?
Hola, yo tengo una duda! cuando tienes un precio en oferta salen los dos precios, por ejemplo desde 50€ y desde 40€ hay alguna manera de que muestre el precio sin oferta en algunos casos y si esta rebajado solo el de la oferta?
Gracias.
Lo he modificado para hacer eso mismo que pides…
me estaba dando el mismo problema
no sé si será la forma correcta pero a mi me ha funcionado
* @param string $price
* @param object $product
* @return string
*/
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
//////////////añadido //////////////
$prices1 = array( $product->get_variation_price( ‘min’, true ), $product->get_variation_price( ‘max’, true ) );
//////////////////////////////////
$prices = array( $product->get_variation_price( ‘min’, true ), $product->get_variation_price( ‘max’, true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( ‘Desde %1$s IVA Inc.’, ‘woocommerce’ ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
//////////////añadido ////////////////
$prices2 = array( $product->get_variation_regular_price( ‘min’, true ), $product->get_variation_regular_price( ‘max’, true ) );
/////////////////////////////
$prices = array( $product->get_variation_regular_price( ‘min’, true ), $product->get_variation_regular_price( ‘max’, true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( ‘Antes desde %1$s IVA Inc.Ahora ‘, ‘woocommerce’ ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
//////////comentado///////
// if ( $price !== $saleprice ) {
//$price = » . $saleprice . ‘ ‘ . $price . »;
//}
//////////////////////////
/////////////añadido/////////
if ($prices1 == $prices2){
$price = » . $price . »;
}else{
$price = » . $saleprice . ‘ ‘ . $price . »;
}
/////////////////////////////
return $price;
}
add_filter( ‘woocommerce_variable_sale_price_html’, ‘wc_wc20_variation_price_format’, 10, 2 );
add_filter( ‘woocommerce_variable_price_html’, ‘wc_wc20_variation_price_format’, 10, 2 );
Muy buenas.
Muchas gracias por tu aportación.
Me gustaría también invitarte a que eches un vistazo a mi plataforma de formación https://cursotiendaonline.com/ desde donde puedes Acceder a TODOS mis cursos online por solo 10 €/mes (Incluye ¡¡SOPORTE!!). En la plataforma tienes cursos sobre WordPress, Curso como crear una tienda online de éxito, Woocommerce, Curso alta e indexación web en google, cursos Analytics ecommerce, SEO general, SEO tiendas online, plantillas wordpress como flatsome, Divi, Astra pro, , etc. etc. Seguro que sería de gran ayuda durante la creación de tu web y después de la creación de la misma.
Hola, es posible puedas poner el código completo con las modificaciones para cuando existen descuentos. Te agradezco