Woocommerce

Mostrar el menor precio para productos variables

1 hay 1 solo Like :)

El problema del rango de precios es que es muy confuso a primera vista y puede hacer que el cliente tome el mayor precio como referencia y acabe abandonando la compra. Para evitar que esto ocurra y mostrar de nuevo el formato de precio de la versión 2.0


function wc_wc20_variation_price_format( $price, $product ) {
    // Precio Normal
    $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] );

    // Precio Oferta
    $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 = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
    }
    
    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 );

La forma más sencilla de hacerlo es entrando en tu panel de administración de WordPress y yendo a la sección «Apariencia > Editor«. Una vez dentro, a la derecha, en el apartado «Plantillas«, haz clic sobre «Funciones del tema» y se cargará en el editor el código de tu archivo function.php. Por último, sólo tienes que desplazarte hasta la última línea del archivo, pegar el código snippet anterior y hacer clic en «Actualizar archivo» para guardar los cambios.

Cómo cambiar el formato de rango de precios para productos agrupados en WooCommerce.

El código anterior sólo resuelve el problema para productos con variaciones, pero ¿qué pasa con los productos agrupados de WooCommerce? Si tú trabajas con productos agrupados, estos también se muestra con un formato de rango de precios. Pues bien, la solución consiste en usar otro código snippet que el bueno de Gerhard Potgieter también ha querido compartir con el resto. El código es el siguiente:

add_filter( 'woocommerce_grouped_price_html', 'wc_wc20_grouped_price_format', 10, 2 );
function wc_wc20_grouped_price_format( $price, $product ) {
	$tax_display_mode = get_option( 'woocommerce_tax_display_shop' );
	$child_prices     = array();

	foreach ( $product->get_children() as $child_id ) {
		$child_prices[] = get_post_meta( $child_id, '_price', true );
	}

	$child_prices     = array_unique( $child_prices );
	$get_price_method = 'get_price_' . $tax_display_mode . 'uding_tax';

	if ( ! empty( $child_prices ) ) {
		$min_price = min( $child_prices );
		$max_price = max( $child_prices );
	} else {
		$min_price = '';
		$max_price = '';
	}

	if ( $min_price == $max_price ) {
		$display_price = wc_price( $product->$get_price_method( 1, $min_price ) );
	} else {
		$from          = wc_price( $product->$get_price_method( 1, $min_price ) );
		$display_price = sprintf( __( 'From: %1$s', 'woocommerce' ), $from );
	}
	return $display_price;

Simplemente hay que seguir los mismos pasos que expliqué en el apartado anterior y ¡listo!

Espero que este sencillo truco te haya sido de ayuda para arreglar el problema de rango de precios en WooCommerce y volver al formato anterior.

Es probable que si los usuarios siguen prefiriendo el formato con un sólo precio, WooCommerce lo tenga en cuenta para próximas versiones y ya no haya que depender de ningún código snippet, pero mientras tanto esta es la mejor solución que conozco.