Cambiare i prezzi nei prodotti variabili di WooCommerce

ATTENZIONE: questo articolo è più vecchio di un anno, e potrebbe non essere più attuale, sei pregato di tenerne conto.

Range prezzi prodotti variabili in WooCommerce

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.

Corsi di Formazione WordPress - Prezzi prodotti variabili WooCommerce corretti

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.

Che ne pensi?
Domande? Suggerimenti?
Lascia un commento…

Condividi se ti è piaciuto!

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp

Articoli correlati:

Roberto Rota

Roberto Rota

Libero professionista, un "artigiano del web", lavoro nella comunicazione in rete da quando esiste Internet. Mi occupo principalmente di assistenza su WordPress e assistenza e consulenza WooCommerce, seguo la realizzazione di progetti web, in particolare siti di e-commerce, visibilità e comunicazione in rete. Il mio curriculum è su Linkedin, e mi puoi trovare anche su Instagram, FaceBook e Twitter.

DAI IL TUO CONTRIBUTO

Se il mio lavoro ti è stato di aiuto, contribuisci alla continuità di questo sito.
Basta una piccola donazione su PayPal, una pizza e una birra alla tua salute!

48 risposte

  1. 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

    1. 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

      1. 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

  2. Ciao, grazie! Ma c’è la possibilità di fare vedere invece solo il prezzo più alto per favore?
    grazie

    1. 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

  3. 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

    1. 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

      1. 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

        1. 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…

  4. Ciao Roberto,

    veramente bella soluzione. Ma se volessi applicare questa funzione solo ad una specifica categoria?

    1. 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

  5. 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?

  6. 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!!

    1. 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”.

  7. 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!

  8. 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.

  9. 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

      1. 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

  10. Ciao Davide, Ciao R0berto, avete trovato la soluzione a questo dettaglio. Cioè visualizzare la strinfa a partire da solo se il prezzo è differente?

  11. 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?

    1. 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

  12. 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?

    1. 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

  13. Ciao Roberto, stamattina ho aggiornato woocommerce all’ultima versione e adesso il filtro non funziona più! :*( che può essere successo? Grazie

  14. 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!

  15. 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

    1. 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

  16. 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è

  17. 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

    1. 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

  18. 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;

  19. 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.

    1. Ciao Alessandro, scusa. Ho lo stesso problema, vorrei visualizzare solo il prezzo più basso, ma non capisco dove modificare il codice. Puoi aiutarmi? grazie

  20. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Ciao, mi chiamo Roberto...

Mi occupo di progetti web, in particolare siti di e-commerce, ed aiuto molte aziende e professionisti a comunicare e vendere grazie ai loro siti web. 
Conosciamoci meglio…

Hai bisogno di aiuto o maggiori informazioni su questo articolo? Contattami:

Altri articoli

Rimaniamo in contatto!

Iscriviti alla mia newsletter per ricevere maggiori informazioni, consigli e barbatrucchi per migliorare la gestione del tuo sito e la tua esperienza sul web.

Riceverai una mail con un link per confermare la tua iscrizione.

Ciao, come posso aiutarti?