CMS Woocommerce WordPress

[WordPress] Eliminar el Rango de Precios en WooCommerce

Photo by Clark Street Mercantile on Unsplash

WooCommerce: Ocultar el intervalo de precios en productos con variaciones

Los productos variables son una gran herramienta de ecommerce, y permiten que un único producto, pueda mostrar precios y características diferentes dentro de su misma ficha. Ej: Un cliente podría elegir talla, color e incluso estampados diferentes en un mismo tipo de camiseta.

En realidad, podría escoger cualquier modificación que se nos ocurriese, ya que los productos variables son 100% flexibles.

El problema, es que hasta día de hoy (versión 3.3.2), cuando se añaden variaciones entorno al precio (Ej: La talla XXL es más cara que la XXS), WooCommerce lo representa de una manera un tanto incómoda. Como intervalo:

 

Si quisiéramos hacer que se mostrase como cualquier otro producto, y que el precio que mostrase fuese el de la variación más económica, bastaría con:

1º- Tener acceso FTP a nuestra web.

2º- Buscar el archivo functions.php y editarlo. Se encuentra en wp-content/themes/nombre_de_tu_tema/functions.php

Recomendamos que, en lugar de hacer la modificación ahí directamente, se cree un tema hijo.

3º Añadir la siguiente función:

//Ocultar rango de precios en WooCommerce
add_filter( 'woocommerce_variable_sale_price_html', 'my_variation_price_format', 10, 2 );
 
add_filter( 'woocommerce_variable_price_html', 'my_variation_price_format', 10, 2 );
 
function my_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( __( '%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( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}

Esto hará que en lugar de mostrarse como arriba, ahora se vea así:

 

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

Escribir comentario

Haz clic aquí para dejar tu comentario