Come visualizzare i prezzi variabili di default in WooCommerce?
Vorrei visualizzare il prezzo variabile di default nella scheda "prezzo a partire da" nella pagina del singolo prodotto, e non avere il prezzo "a partire da".
È confusionario per l'acquirente vedere un prezzo "a partire da" e poi sotto di esso un prezzo per ogni variazione, che cambia una volta che viene scelta una variante.
vedi immagine allegata
Quindi invece di avere due serie di campi prezzo, voglio visualizzare solo uno, sia che si tratti di un prodotto singolo o variabile.

La funzione woocommerce_template_single_price()
che gestisce la visualizzazione del prezzo "normale" è pluggable, il che significa che può essere sovrascritta inserendo questo nel tuo functions.php
:
//sovrascrive la funzione di WooCommerce
function woocommerce_template_single_price() {
global $product;
if ( ! $product->is_type('variable') ) {
woocommerce_get_template( 'single-product/price.php' );
}
}
Questo funziona perché in woocommerce-template.php
la funzione viene inizializzata così:
if ( ! function_exists( 'woocommerce_template_single_price' ) ) {
function woocommerce_template_single_price() {
woocommerce_get_template( 'single-product/price.php' );
}
}
Come puoi vedere, la condizione dice se la funzione non esiste, ma la funzione esiste già. Quella che inseriamo nel functions.php
verrà utilizzata perché viene inizializzata prima.
Per mostrare il prezzo della variazione quando viene caricata una pagina di prodotto singolo con un prodotto variabile, devi selezionare una variazione di prodotto predefinita nella pagina di modifica del prodotto.

Sto utilizzando il tema "Porto" e ho avuto anche io questo problema. Puoi risolvere il problema inserendo questo codice nel tuo functions.php
del child theme:
// Prezzo più basso
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 ) {
// Prezzo Principale
$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] );
// Prezzo in Sconto
$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;
}
In questo modo il tuo prezzo apparirà come un prezzo singolo e sarà il prezzo più basso tra le variabili del prodotto. Funziona. L'ho utilizzato personalmente.
