Con la versione 2.1 del 2014, gli sviluppatori di WooCommerce hanno avuto la bella pensata di cambiare il formato del prezzo dei prodotti variabili.
Prima era il più piacevole “A partire da:”, da WooCommerce 2.1 in poi è diventato il range “prezzo minimo – prezzo massimo”, a cui ci siamo abituati ma che non riesco proprio a farmelo piacere.
Sono sicuro che in taluni casi il range di prezzi minimo/massimo sia più indicato, ma negli store online di mezzo mondo siamo ancora abituati al vecchio sistema, e anche io lo preferisco.
In particolare ritengo sia più indicato in quegli store dove la differenza tra variazioni è minima, come per abbigliamento e accessori.
Per modificare il formato del prezzo nei prodotti variabili di WooCommerce, ci viene incontro il classico snippet php.
Come cambiare il formato dei prezzi nei prodotti variabili di WooCommerce
Per sostituire il range di prezzi minimo/massimo con il più amichevole (e ammiccante) “A partire da:”, è sufficiente aggiungere un filtro al file functions.php del tema, ovviamente meglio se si sta utilizzando un tema child:
// Prezzi WooCommerce prodotti variabili senza range function rox_varb_price_range( $wcv_price, $product ) { $prefix = sprintf('%s: ', __('A partire da:', 'wooprice_norange')); $wcv_reg_min_price = $product->get_variation_regular_price( 'min', true ); $wcv_min_sale_price = $product->get_variation_sale_price( 'min', true ); $wcv_max_price = $product->get_variation_price( 'max', true ); $wcv_min_price = $product->get_variation_price( 'min', true ); $wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ? wc_price( $wcv_reg_min_price ) : '<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>'; return ( $wcv_min_price == $wcv_max_price ) ? $wcv_price : sprintf('%s%s', $prefix, $wcv_price); } add_filter( 'woocommerce_variable_sale_price_html', 'rox_varb_price_range', 10, 2 ); add_filter( 'woocommerce_variable_price_html', 'rox_varb_price_range', 10, 2 );
Il risultato è quello che si vede qui sotto.
Si può sostituire la stringa “A partire da:” della riga 4 con la formula preferita.
Al posto di “A partire da:”, molti preferiscono il semplice “Da:”, dato che su molti store in lingua inglese siamo abituati a vedere il più semplice “From:”
Lo snippet mantiene la differenza di prezzo nei prodotti scontati, anteponendo al prezzo in saldo il prezzo originale grigio e barrato.
Lo snippet è stato testato con WooCommerce 4.1.0, WordPress 5.4.1, e con i temi Storefront e Flatsome.
Aggiornamento e adattamento di un articolo originale del 17 febbraio 2014.
50 risposte
Ciao, grazie mille per il tuo lavoro. volevo sapere come elimare del tutto la stringa “a partire da” o “da..” vorrei che i prezzi si visualizzassero soltanto quando il cliente seleziona le caratteristiche e non fosse proprio visibile questa stringa. come dovrei fare? grazie mille
Ciao Anna, quello che vuoi fare sembra un tantinello più complicato, bisogna creare uno snippet molto più complesso.
Non mi hanno mai chiesto nulla del genere, dovrei fare un bel po’ di prove temo…
Buonasera a tutti
un aiuto per favore, sembrava aver raggiunto il mio obiettivo ma invece nada 🙁
Io importo i listini fornitore tramite URL (link .csv) tramite WP ALL Import Pro.
Una volta importati i listini c’è qualche cosa anche tramite code snippets che mi fa impostare i prezzi con ricarico e Iva (22%) ?
Inoltre c’è un modo per far aggiornare i file senza doverli reimportare ?
Spero di essere stato chiaro 🙂
Grazie e buona serata
Ciao Domenico, francamente non me l’hanno mai chiesto prima, non sono a conoscenza di sistemi che permettano di aggiungere un ricarico e le tasse ad un listino esportato in CSV.
Magari tra i tanti plugin che permettono import/export in modo avanzato ce n’è qualcuno che fa qualcosa del genere, ma su due piedi non saprei consigliarti.
Se mi capita di vedere qualcosa te lo dico.
rob
Ciao Roberto
grazie mille per la tua celere risposta.
In attesa di tue news continuo a “sbatterci la testa” perchè secondo me ci deve essere per forza un sistema.
Thanks e buona serata
Ciao, grazie! Ma c’è la possibilità di fare vedere invece solo il prezzo più alto per favore?
grazie
Ciao Marco, scusa il ritardo.
Lo script ricava già il prezzo più alto, assieme a quello più basso, quindi credo che con qualche modifica allo script si possa fare
Ovviamente dovrei fare qualche prova.
rob
Ciao, grazie per l’articolo, ho provato la modifica del file:
[sito]/wp-content/themes/Divi/functions.php
aggiungendo il tuo codice in fondo al listato, ma senza risultato.
Versione di WooCommerce: 4.7.0
Versione di WordPress: 5.5.3
Potrebbe non essere più valido per questa release o sto editando il file sbagliato?
Grazie
Ciao Mirko
diciamo che non è consigliabile modificare direttamente il file functions.php del tema, come anche altri files sempre del tema, perché al primo aggiornamento del tema perderesti tutte le personalizzazioni.
Visto che non usi un tema child, ti consiglio un plugin come Code Snippets per inserire gli snippet php, vedi qui https://robrota.com/aggiungere-snippet-php-wordpress/
Comunque in teoria lo snippet dovrebbe funzionare anche dove lo hai inserito, ho testato lo snippet con le nuove versioni di wordpress e woocommerce e non ha problemi, forse lo hai inserito male.
Però non l’ho testato con Divi, non è un tema che uso spesso, ma non credo che Divi vada a influire su quei loop di WooCommerce.
rob
Ciao Roberto, grazie per la risposta, ho creato un child theme ed ho provato la modifica anche lì, ma niente da fare, temo forse sia un problema del tema stesso, forse pone qualche limitazione che impedisce il caricamento del codice.
Grazie lo stesso.
Ciao
Ciao Mirko, mi sembra davvero molto strano che Divi blocchi queste funzioni, ho molti dubbi in proposito, sono cose basiche per il funzionamento di WooCommerce.
Purtroppo non ho un Divi con WooCommerce da provare, ma sono molto curioso…
Ciao Roberto,
veramente bella soluzione. Ma se volessi applicare questa funzione solo ad una specifica categoria?
Ciao Gabriele,
bisognerebbe guardarci visto che lo snippet agisce sia sul singolo prodotto che sui loop degli archivi, magari appena mi capita cerco di fare qualche prova.
rob
Ciao Roberto in un negozio dove si vendono merci al pezzo e merci al kg….
come si imposta un “prezzo al Kg” per quel prodotto e il prezzo al pezzo per gli altri prodotti?
Come me la cavo?
In teoria un prezzo è un prezzo, che sia di una unità o di 1 Kg o di un metro.
Sta a te specificarlo nel prodotto nel modo migliore
Ciao Roberto,
una domanda al volo, ho provato il codice da te creato e funziona perfettamente… l’unico mio problema è che mi sconpare anche la dicitura “iva esclusa”.
Come posso risolvere questa cosa?
Ti ringrazio anticipatamente!!
Ciao Stefano, con un po’ di tempo a disposizione si potrebbe richiamare la funzione relativa alla dicitura, ma per una soluzione veloce puoi aggiungerla in html nella riga 13, nella pare che racchiude l’ultimo tag “ins”.
sei un grandissimo! Grazie! Mi hai salvato. io lo Ho usato per il prezzo al kg. e ho modificato il codice impostandolo sul prezzo massimo (nel mio caso 1 kg). Posto qu se serve.
// Use WC 2.0 variable price format
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 ) {
$max_price = $product->get_variation_price( ‘max’, true );
$price = sprintf( __( ‘Prezzo al kg: %1$s’, ‘woocommerce’ ), wc_price( $max_price ) );
return $price;
}
Grazie ancora!
Grazie a te per il tuo feedback!
rob
Ho testato questo codice ma blocca tutto…e non funziona cpn wordpress 5.4.2 e woocommerce 4.2.2
Appena controllato per scrupolo, e funziona correttamente con le ultime versioni di WP e WooCommerce
Devi aver sbagliato qualcosa.
salve chiedo un aiuto a tutti voi, io sono molto inesperta,
stavo programmando uno sconto tramite codice coupon per i miei clienti.
il problema è questo
io effettuo già normalmente uno sconto ( ex • maglia €57 barrato €50)
ora attivando un coupon sconto la percentuale viene applicata a €50 mentre io vorrei fosse da €57(prezzo di partenza prodotto)
come posso sospendere momentaneamente questo nostro piccolo sconto senza andare a modificare ad uno uno i prezzi sia prima dell attivazione coupon / e ovviamente al termine dell utilizzo codice che i prezzi tornino con il nostro piccolo sconto.
spero di essere riuscita a spiegarmi.
grazie per l’aiuto.
Ciao Roberta,
l’unica opzione di WooCommerce è di non permettere l’utilizzo dei coupon sui prodotti in saldo, è nativa nella gestione dei coupon.
rob
Buongiorno.
Ho realizzato un sito e-commerce che funziona perfettamente ma ora mi viene chiesto di permettere alle aziende con P.IVA europea, di poter acquistare i prodotti eliminando l’IVA nel carrello e nel conteggio, mentre deve rimanere per i clienti senza P.IVA.
Ho inserito un plugin che tramite iscrizione al sito, applica uno sconto pari all’IVA ma la soluzione non piace ai miei clienti poiché l’IVA viene ricalcolata comunque dopo lo sconto effettuato e che vorrebbero proprio eliminare la voce IVA dal carrello.
Potrebbe aiutarmi a risolvere il problema?
La ringrazio infinitamente.
Ivano
Ciao Ivano, se non ricordo male il plugin Fiscalità Italiana https://it.wordpress.org/plugins/woo-fiscalita-italiana/ si comporta correttamente in queste situazioni
Rimane però il fatto che il calcolo avviene al momento in cui il cliente inserisce il proprio indirizzo.
Ciao Roberto.
Ora scarico il plugin e controllo le funzionalità. Grazie infinite per il prezioso aiuto, non conoscevo questo plugin.
Buona giornata e ancora grazie.
Ivano
Ciao Davide, Ciao R0berto, avete trovato la soluzione a questo dettaglio. Cioè visualizzare la strinfa a partire da solo se il prezzo è differente?
Ciao a tutti,
innanzitutto ringrazio Roberto per questo articolo perchè mi è stato utilissimo, molto chiaro e semplice nella spiegazione, soprattutto per me che sono agli inizi e non capisco molto di woo commerce. Ma ho un’altro problema da risolvere e spero che mi siate tutti d’aiuto.
Ho modificato il file function php del mio tema (hill) e finalmente la dicitura “a partire da..” funziona, però non ho capito come impostare il prezzo più basso. Per essere più chiara : sto lavorando ad un sito dove ci sono delle variazioni sulla quantità, ad esempio se acquisto 100 pezzi di un determinato articolo ho un prezzo, se ne acquisto 200 ne avrò un altro e così via. Ma ovviamente avendo associato il Bulk per le variazioni, mi applica il primo prezzo (cioè quello piu alto, in base alla quantità minima) per poter applicare la scontistica quando acquisto quantità maggiori.
Come devo muovermi?
Bella domanda…
Ovviamente lo snippet prende il prezzo più basso direttamente dalle variazioni, ma se ci sono altri fattori di mezzo la faccenda si complica.
Così su due piedi non saprei, dipende da cosa usi per generare gli sconti. Se si tratta di un plugin, potresti chiedere supporto al suo sviluppatore mostrandogli lo snippet, magari sa già come adattarlo.
rob
ciao roberto, grazie per la soluzione che adesso fa al caso mio.
Vorrei sapere una cosa: tutti parlate di tema child ma vi riferite al tema (estetico -twentyfourteen per esempio) oppure alla creazione di un tema child di woocommerce?
Nel caso si trattasse di un tema child di woocommerce come devo fare per crearlo?
Ciao Gian, credo tu abbia bisogno di un po’ di chiarezza sui temi child.
Quando usi un tema su wordpress, se per caso lo modifichi uno dei suoi files al primo aggiornamento azzeri le modifiche.
Per evitare questo, si crea un tema figlio, che si appoggia al tema originale, dove si creano tutte le modifiche del caso senza modificar eil tema originale.
rob
allora avevo capito bene. tema child fatto!
🙂
Ciao Roberto, stamattina ho aggiornato woocommerce all’ultima versione e adesso il filtro non funziona più! :*( che può essere successo? Grazie
Ti ringrazio della segnalazione, appena posso verifico.
Roberto
Ciao Roberto e grazie mille per l’utile articolo.
L’unico problema è che nei prodotti in offerta non compare più il prezzo di listino barrato (che compariva anche di colore rosso) prima del prezzo reale di vendita nella lista dei prodotti.
C’è un modo per modificare la funzione PHP e ripristinare questa funzionalità?
Altrimenti scorrendo i prodotti non si capisce più quando un articolo è in offerta.
Grazie mille!
Ciao Davide, non c’ho fatto caso al prezzo barrato, dovrei fare qualche verifica.
rob
Ok grazie, attendo tue!
Un caro saluto
Ciao Roberto, grazie per l’articolo utilissimo per il mio caso.
Ti chiedo però se è possibile, rimuovere la stringa “A partire da” dai prodotti variabili che non hanno variazione di prezzo.
In quanto anche un prodotto variabile, dove c’è solo la variabile del colore ma con un unico prezzo viene mostrato anch’esso con la dicitura “A partire da”.
Spero di essermi spiegato e ti ringrazio ancora
Ciao Davide, ottima osservazione.
Lo snippet è semplice, ricava il prezzo minore e aggiunge la stringa.
Bisognerebbe lavorarci un po’, per trovare il modo di distinguere i prodotti variabili con un solo prezzo, non dovrebbe essere impossibile.
rob
ciao Roberto,
ho aggiunto il codice scritto e funziona alla grande!!!
Solo ch enella versione inglese non si traduce la scritta ” apartire da:” ..forse perchè si trova dentro il file functions.php?
Come plugin di traduzione utilizzo wpml e nella ricerca delle stringhe non compare nulla.
come posso fare?
grazie ancora
Mighè
Ciao Michele,
puoi usare lo snippet associato ad un condizionale PHP basato sulla lingua della pagina determinata da WPML.
rob
Ciao Roberto,
stavo cercando proprio questa modifica! Condividiamo la stessa idea… meglio “A partire da”! Purtroppo non riesco a trovare il punto dove poter fare la modifica… mi potresti dire con esattezza il punto? Faccendo riferimento quindi al file function.php del theme..
Ciao grazie mille
DAVIDE
Ciao Davide, quando si aggiunge una nuova funzione al file functions.php in genere le si inseriscono alla fine del file.
È sconsigliabile però modificare il tema originale ma usare un tema child, altrimenti al primo aggiornamento del tema perdi tutte le modifiche.
rob
Ciao. Replico a me stesso specificando che bastava aggiungere un argomento alla funzione sprintf.
Quindi:
sprintf( __( 'A partire da: %1$s', 'woocommerce', '€ IVA incl.'), wc_price( $min_price ) );
return $price;
Grazie per aver condiviso 😉
rob
Ciao Rob!
Una domanda: come posso aggiungere il suffisso dell’IVA al prezzo più basso?
Con questo codice ora viene mostrato il prezzo più basso del range. Ma non ho più il suffisso della tassazione. I prezzi singoli, invece, sì.
Grazie sin d’ora per il tuo supporto.
Ciao Alessandro, scusa. Ho lo stesso problema, vorrei visualizzare solo il prezzo più basso, ma non capisco dove modificare il codice. Puoi aiutarmi? grazie
Ciao Debora, devi sostituire le righe 6 e 7 con quelle proposte da Alessandro.
rob
Carissimo Roberto volevo chiederti un aiuto: aggiornando woocommerce mi sono accorta che sono spariti i titoli che indicano gli attributi del prodotto nella frontend, come misura scegli xxl,xx e colore.
Ciao Elisa, potrebbe dipendere anche dal tema in uso.
rob