¿Cómo mostrar precios variables por defecto en WooCommerce?
Me gustaría mostrar el precio variable por defecto en la "pestaña de precio desde" en la página de producto individual, y no tener el precio "desde".
Es confuso para el comprador ver un precio "desde" y debajo un precio para cada variación, que cambia una vez que se elige una variación.
ver imagen adjunta
Así que en lugar de tener dos conjuntos de campos de precio, quiero mostrar solo uno, ya sea para un producto simple o variable.

La función woocommerce_template_single_price()
que maneja la visualización del precio "normal" es enchufable (pluggable), lo que significa que puede ser anulada colocando esto en tu archivo functions.php
:
//anular la función de WooCommerce
function woocommerce_template_single_price() {
global $product;
if ( ! $product->is_type('variable') ) {
woocommerce_get_template( 'single-product/price.php' );
}
}
Esto funciona porque en woocommerce-template.php
la función se inicia de esta manera:
if ( ! function_exists( 'woocommerce_template_single_price' ) ) {
function woocommerce_template_single_price() {
woocommerce_get_template( 'single-product/price.php' );
}
}
Como puedes ver, la condición dice si la función no existe, pero la función ya existe. La que colocamos en functions.php
será utilizada porque se inicia antes.
Para mostrar el precio de variación cuando se carga una página de producto individual con un producto variable, debes seleccionar una variación de producto predeterminada en la página de edición del producto.

Estoy usando el tema "Porto" y también tuve este problema. Puedes resolver el problema colocando este código en tu archivo functions.php
de tu tema hijo:
// Precio más barato
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 );
function wc_wc20_variation_price_format( $price, $product ) {
// Precio Principal
$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 de 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( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
Entonces tu precio se mostrará como un precio único y será el precio más barato de tu producto variable. Funciona. Lo he usado.
