Solución al problema de rango de precios en WooCommerce
Últimamente estoy configurando una amplia variedad de tiendas hechas usando woocommerce, y me he encontrado con la dificultad de hacer un setup correcto con los dichosos rangos de precios. El tema es que cuando tienes un producto con combinaciones, a la vista en diferentes partes de la tienda tienes el precio como un rango. Este rango es un pegote que se entiende fatal, y que da pocas pistas de lo que significa:
La gran dificultad es que es muy confuso, un cliente potencial puede valorar el precio más alto como el de referencia, se espante y abandone la compra. La mejor solución que he encontrado es usando una idea que he observado en el blog de Gerhard Potgieter. Con unas pocas líneas de código añadidas al functions.php de tu tema (O mejor aún, a tu plugin de customizaciones para no perder nunca nada), podrás darle forma a la manera en la que se visualizan los datos en el woocommerce:
/**
* 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( __( 'From: %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( __( 'From: %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 );
Y así es como queda una vez hechos los apaños con este código:
Esto es válido para los productos con variaciones, para los productos agrupados tendríamos que añadir algunas líneas de código adicionales.
¡Muchas gracias a Antonio de woodemia por la pista!