Home>Guide>Come personalizzare WooCommerce: il checkout

Come personalizzare WooCommerce: il checkout


Come personalizzare WooCommerce: il checkout


Per chi abbia utilizzato almeno una volta WooCommerce, c’è un’esigenza che sicuramente è comparsa più spesso delle altre: come faccio a modificare i campi di input del checkout e come faccio ad aggiungerne di nuovi?
Scopriamo come soddisfare entrambe le esigenze utilizzando gli hooks di WooCommerce, senza far ricorso a plugins già confezionati.

  • Leggi l'articolo, ti bastano solo 1 minuto, 13 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Modificare i campi degli indirizzi di fatturazione o spedizione già esistenti

WooCoomerce mette a disposizione degli hooks per consentirti di modificare a piacimento i campi già esistenti e modificarli è molto semplice.

Ad esempio, ipotizza di voler eliminare il campo Ragione sociale dall’indirizzo di fatturazione. Utilizziamo l’hook woocommerce_billing_fields, che agisce su un array contenente i campi relativi all’indirizzo di fatturazione, oppure l’hook woocommerce_shipping_fields, che agisce su un array contenente i campi relativi all’indirizzo di spedizione.
Nel nostro caso, utilizzeremo il primo. Aggiungi quindi al file functions.php del tuo tema, che trovi nello spazio FTP del tuo sito, in:

wp-content/themes/{nome_del_tema}/

il codice:

// Rimuove il campo “Ragione sociale” dall’indirizzo di fatturazione
add_filter( 'woocommerce_billing_fields', function( $fields ) {
	unset( $fields['billing_company'] );
	return $fields;
} );

e controlla il risultato:

Per semplificare il lavoro, ecco un elenco dei campi contenuti negli array, così da poterli modificare a tuo piacimento:

Billing

  • billing_first_name
  • billing_last_name
  • billing_company
  • billing_address_1
  • billing_address_2
  • billing_city
  • billing_postcode
  • billing_country
  • billing_state
  • billing_email
  • billing_phone

Shipping

  • shipping_first_name
  • shipping_last_name
  • shipping_company
  • shipping_address_1
  • shipping_address_2
  • shipping_city
  • shipping_postcode
  • shipping_country
  • shipping_state

Ma sai che è possibile agire su ognuno dei campi modificandone le proprietà per personalizzarli come preferisci?
Nel caso volessi, ad esempio, non eliminare il campo Ragione sociale, ma renderlo obbligatorio, ecco come fare:

// Rende obbligatorio il campo “ragione sociale” nell’indirizzo di fatturazione
add_filter( 'woocommerce_billing_fields', function( $fields ) {
	$fields['billing_company']['required'] = true;
	return $fields;
} );

Ed ecco l’elenco delle proprietà contenute in ogni campo:

  • type: Tipo di input (text, textarea, password, select)
  • label: Etichetta di testo per il campo
  • placeholder: Testo segnaposto
  • class: Classi da applicare
  • required: True o false, indica se il campo è obbligatorio
  • clear: True o false, stabilisce se il campo può avere altri campi accanto
  • priority: La priorità utilizzata per l’ordinamento dei campi
  • label_class: Classi da applicare all’etichetta del campo
  • options: Utilizzato dagli input di tipo select, è un array contenente le singole opzioni (nella forma key => value)

Aggiungere un campo personalizzato

Ma se anziché modificare o eliminare campi già esistenti volessi aggiungerne uno nuovo? Sì, anche questo è possibile, ma è necessario qualche passaggio supplementare.
Sono sicuro, una delle richieste che molti utilizzando WooCommerce si sono trovati a dover affrontare è:

È possibile aggiungere un campo “Partita IVA / Codice fiscale” all’indirizzo di fatturazione?

Colto nel segno, vero? Beh, la risposta è sì, ovviamente, ma il plus è farlo senza alcun plugins!
Utilizzando lo stesso book menzionato in precedenza, aggiungi nel file functions.php del tuo tema, che trovi nello spazio FTP del tuo sito, in:

wp-content/themes/{nome_del_tema}/

il codice:

// Aggiunge il campo "Partita IVA / Codice fiscale"
add_filter( 'woocommerce_billing_fields', function( $fields ) {
    $fields['billing_vat'] = array(
        'label'         => __( 'Vat number / Tax code', 'woocommerce' ),
        'placeholder'   => _x( 'Vat number / Tax code', 'placeholder', 'woocommerce' ),
        'required'      => true,
        'class'         => array( 'form-row-wide' ),
        'clear'         => true,
        'priority'      => 35
    );
    return $fields;
} );

Ti starai chiedendo: ma adesso come faccio a salvare il valore del campo appena inserito? Giusta osservazione, ma la risposta è molto più semplice di quanto prevedi. I campi inseriti nell’array checkout_fields vengono automaticamente processati e salvati senza alcun tipo di implementazione supplementare. Per maggiore chiarezza e completezza, il campo viene salvato, come accade per gli altri, tra i post meta dell’ordine con la nomenclatura _billing_vat.


Visualizzare il campo personalizzato nel backend

Bene, abbiamo aggiunto un nuovo campo, abbiamo verificato che viene correttamente visualizzato nel frontend e sappiamo che WooCommerce lo processa correttamente come se fosse un campo nativo. Ma un attimo, hai notato che non vi è traccia di questo campo nel backend di WordPress? Non preoccuparti, non c’è alcun errore o problema.
Se è vero che il salvataggio del valore del campo avviene in automatico, è anche vero però che la sua visualizzazione nel backend di WordPress non è altrettanto automatica.
Ma niente paura, sono sufficienti poche righe di codice:

// Visualizza il campo "Partita IVA / Codice fiscale" nella scheda ordine nel backend di WordPress
add_filter( 'woocommerce_admin_order_data_after_billing_address', function( $order ) {
    echo '<p><strong>' . __( 'Vat number / Tax code', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->get_ID(), '_billing_vat', true ) . '</p>';
}, 10, 1 );

Andando nel backend di WordPress e aprendo una scheda ordine, noterai che adesso è visibile il nuovo campo:


Visualizzare il nuovo campo nella mail dell'ordine

Ci siamo quasi, un ultimo sforzo. Potresti avere la necessità di voler visualizzare il campo appena creato anche nella mail dell’ordine. Anche stavolta, è sufficiente aggiungere nel file functions.php del tuo tema, che trovi nello spazio FTP del tuo sito, in:

wp-content/themes/{nome_del_tema}/

il codice:

// Aggiunge il campo "Partita IVA / Codice fiscale" alla mail dell'ordine
add_filter( 'woocommerce_email_customer_details_fields', function( $fields, $sent_to_admin, $order ) {
     $fields['_billing_vat'] = array(
     	'label' => __( 'Vat number / Tax code', 'woocommerce' ),
     	'value' => get_post_meta( $order->get_ID(), '_billing_vat', true )
     );
     return $fields;
}, 10, 3 );

e WooCommerce si occuperà di fare il resto!


Aggiornamento: campo editabile

Ma se volessi che il nuovo campo fosse anche editabile? Beh, anche questo è risolvibile!

La parte di creazione del campo non varia, quindi puoi fare riferimento al paragrafo “Aggiungere un campo personalizzato”, mentre i passaggi successivi cambiano leggermente.
È necessario adesso far in modo che il nuovo campo sia visibile nell’indirizzo di fatturazione formattato, quindi prima definisci le variabili da utilizzare, sempre nel file functions.php:

// Crea la variabile "Partita IVA / Codice fiscale" per la stampa
add_filter( 'woocommerce_formatted_address_replacements', function( $address, $args ) {
    $address['{vat}'] = '';
    $address['{vat_upper}'] = '';
    if ( ! empty( $args['vat'] ) ) {
        $address['{vat}'] = $args['vat'];
        $address['{vat_upper}'] = strtoupper($args['vat']);
    }
    return $address;
}, 10, 2 );

ed infine inserisci il nuovo campo nell’indirizzo formattato:

// Ridefinisce la formattazione per stampare l'indirizzo, compreso il campo "Partita IVA / Codice fiscale"
add_filter( 'woocommerce_localisation_address_formats', function( $formats ) {
    return str_replace( "{company}", "{company}\n{vat_upper}", $formats );
} );

In questo modo, il campo è stato aggiunto direttamente nella funzione che formatta e visualizza l’indirizzo di fatturazione, quindi verrà aggiunto automaticamente ad esso sia nell’ordine nel backend, sia nella mail dell’ordine senza utilizzare ulteriore codice e, inoltre, risulta adesso anche modificabile! Prova per credere, apri nel backend del tuo e-commerce un ordine e clicca sul pulsante di modifica indirizzo di fatturazione.



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Come inserire il pulsante "Condividi su WhatsApp" su WordPress

Come inserire il pulsante ‘Condividi su WhatsApp’ su WordPress


Ecco un utile consiglio su come aumentare la diffusione delle pagine e degli articoli del tuo WordPress introducendo il pulsante di condivisione su WhatsApp. Condividere da smartphone non è mai stato così semplice.

Come resettare la password di WordPress con phpMyAdmin

Come resettare la password di WordPress con phpMyAdmin


Hai dimenticato la password per accedere al backend del tuo WordPress e non sai come fare? Questa guida fa al caso tuo! Scopri come modificare la password del tuo account direttamente dal database

Oppure cerca tra gli articoli correlati


Qualche dubbio? Ecco le opinioni degli altri utenti

Ottimo lavoro 🙂 e se io volessi modificare l’ordine della visualizzazione dei campi del Billing?
Grazie

In risposta a Roberto

Ciao Roberto, grazie mille!
Per modificare l’ordine, ti basta utilizzare il filtro ‘woocommerce_billing_fields’, agendo sull’attributo priority del campo che ti interessa. Ad esempio, per spostare in fondo il campo company, potresti inserire nel file functions.php lo snippet:

// Sposta il campo “Ragione sociale” in fondo
add_filter( 'woocommerce_billing_fields', function( $fields ) {
	$fields['billing_company']['priority'] = 999;
	return $fields;
} );

Se ti può essere utile, ecco l’elenco dei campi del Billing con le relative priorità di default:

  • billing_first_name -> 10
  • billing_last_name -> 20
  • billing_company -> 30
  • billing_country -> 40
  • billing_address_1 -> 50
  • billing_address_2 -> 60
  • billing_city -> 70
  • billing_state -> 80
  • billing_postcode -> 90
  • billing_phone -> 100
  • billing_email -> 110

Saluti

Qui in realtà ho risolto con un frammento di codice recuperato su gitub:
https://gist.github.com/bavington/f325d5bee9325001bba3
grazie ancora e buon lavoro

Salve. grazie per l’articolo molto semplice e dettagliato. Vorrei chiederti: se volessi rendere un prodotto acquistabile solo attraverso l’inserimento di un coupon da inserire nel carrello? È possibile?

In risposta a Gennaro

Ciao Gennaro,
la logica è un po’ complessa: considera che un prodotto se non vendibile non può essere aggiunto al carrello, l’approccio dovrebbe essere un altro. Ad esempio, potresti lasciare vendibile il prodotto, ma considerare di bloccare la possibilità di procedere al checkout se non è presente il coupon. Questa soluzione però bloccherebbe l’acquisto per tutti i prodotti in assenza del coupon, non so se possa fare al caso tuo. Occorrerebbe un’analisi più approfondita dello store, del processo di acquisto e della logica che desideri applicare, ma in linea di massima questa può essere una base da cui partire.
Spero di esserti stato di aiuto…

Ok grazie tante del suggerimento

Ciao, ho letto il tuo articolo che trovo interessante e ben fatto. Io però vorrei modificare la scritta "Dettagli di fatturazione" e la check "Dettagli di spedizione". In sostanza vorrei che le etichette cambiassero nome, poi se nel backend i campi mantengono il nome di billink e shipping non importa. Come posso fare?

In risposta a Claudio

Ciao Claudio, grazie mille! Purtroppo i testi che vorresti cambiare non sono modificabili tramite hooks. Le alternative sono due, la prima è modificare il file di traduzione di WooCommerce (o del tuo tema, se la label è stata sovrascritta), oppure modificando direttamente il file woocommerce/checkout/form-billing.php nella cartella del tuo tema.

Ciao, grazie per la risposta. Sono riuscito a cambiare l'etichetta "Dettagli di fatturazione" dal file form-billing.php, però mi sono resoconto che non posso modificare di conseguenza anche questi campi (togliendo per esempio nome, cognome e ragione sociale) in quanto li utilizza per creare la fattura. La cosa migliore forse è personalizzare i campi "dettagli di spedizione". Però non ho capito come far apparire la check da selezionare per visualizzare i campi di spedizione e da dove cambiare l'etichetta: nel file form-billing.php non c'è…
Grazie ancora.

In risposta a Claudio

Ciao Claudio,
mi fa piacere esserti stato di aiuto. La checkbox e la relativa etichetta, puoi trovarla nel file woocommerce/checkout/form-billing.php nella cartella del tuo tema

Ciao woocommerce mette due differenti indirizzi visualizzabili (fatturazione e spedizione). Qualora volessi che fosse visibile solo quello di spedizione e chiuso (ed attivabile col segno di spunta) quello di fatturazione? cosa devo fare?

In risposta a gianfranco

Ciao Gianfranco,
la cosa non è semplicissima, ma neanche molto complessa. Ci sono tre files su cui focalizzare l’attenzione: form-checkout.php, form-billing.php, form-shipping.php che trovi nella cartella wp-content/plugins/woocommerce/templates/checkout/.
Considera però che questi files hanno quasi sempre un override, presente nella cartella woocommerce all’interno del tema attivo.
Di default, l’indirizzo di fatturazione è attivo e sempre visibile, quello di spedizione invece è attivabile tramite checkbox, quindi esattamente il contrario di quello che interessa a te! Però, analizzando i tre files, puoi invertirne il funzionamento, l’unica cosa leggermente più complessa (dipende da quanto mastichi codice) è scrivere un piccolo javascript che alla spunta della checkbox apra l’indirizzo di fatturazione e non quello di spedizione.
Spero che questo consiglio possa esserti di aiuto ed indirizzarti sulla giusta via!

Ciao, io vorrei invece levare l'obbligo alla voce "partita iva" nel campo di fatturazione e spedizione, come devo fare?

In risposta a marco

Ciao marco,
il campo Partita IVA non fa parte di quelli di default di WooCommerce, quindi la gestione dipende dall’eventuale plugin/funzione che hai utilizzato per visualizzarlo. In linea di massima, prova a farti stampare il contenuto della variabile $fields all’interno dell’hook:
apply_filters( 'woocommerce_billing_fields', $fields );
per capire come viene chiamato il campo relativo alla Partita IVA e modifica il valore in corrispondenza di “required” così come nell’esempio utilizzato nell’articolo.

Complimenti, ottimo articolo, scritto in modo chiaro e molto interessante.
Avrei una domanda. Io utilizzo un child theme, per non perdere le mie modifiche con gli aggiornamenti. È sufficiente intervenire sul file functions.php del child theme, anziché su quello del tema genitore o devo fare qualcos'altro?
Grazie e ancora complimenti.
Daniele

In risposta a Daniele

Buongiorno Daniele,
grazie mille per i complimenti!
Puoi tranquillamente intervenire sul file functions.php del child theme, anzi, è fortemente consigliato così da evitare di perdere le modifiche in caso di aggiornamento del tema padre.
Saluti

Ciao, e se invece volessi avere la possibilità di modificare come admin il campo codice fiscale inserito dal cliente, nel caso fosse stato inserito in modo errato?

In risposta a barbara

Ciao Barbara,
ho appena aggiornato l’articolo, modificando gli snippets di codice in maniera da utilizzare altri hooks in grado di creare il campo editabile ed aggiungerlo direttamente all’indirizzo di fatturazione, spero possa esserti utile e risolvere il tuo problema!
Saluti

Ciao Code4Life, ottima esposizione complimenti. Vorrei porti un quesito in merito all'articolo. Quì parli di un campo personalizzato (Partita iva) ma se volessi trasformare queste istruzioni da partita iva a email pec mi consiglieresti di cambiare la stringa billing_vat in billing_email? e non "accozzerebbe con l'altro campo billing_email (email normale di registrazione) già contenuta nel form del checkout? Ho la necessità di includere un campo email pec oltre che alla mail comune.. che mi consigli di fare?

Ti ringrazio anticipatamente

In risposta a Luca

Ciao Luca, grazie mille!
Il campo Partita IVA è solo esemplificativo, puoi inserire qualsiasi campo desideri, quindi anche il campo Email PEC. Però, come hai già correttamente evidenziato, va evitato il nome billing_email per evitare conflitti con il campo email pre-esistente. Il nome è arbitrario, potresti, ad esempio, chiamarlo billing_emailpec, ma ti consiglio poi di specificare come type del campo il valore email, così da avere una coerenza sintattica HTML.
Saluti

Ciao, interessante articolo, cosi ho provato a fare delle prove, per esempio cercando di aggiungere un campo telefono nell'indirizzo di spedizione ed ho correto il tuo codice di esempio per la partita iva. Non funziona, dove sbaglio?
Grazie in anticipo.

// Aggiunge il campo "Telefono al form spedisci a""
add_filter( 'woocommerce_shipping_fields', function( $fields ) {
$fields['shipping_phone'] = array(
'label' => __( 'Phone number', 'woocommerce' ),
'placeholder' => _x( 'Phone number', 'placeholder', 'woocommerce' ),
'required' => true,
'class' => array( 'form-row-wide' ),
'clear' => true,
'priority' => 1

);
return $fields;
} );

In risposta a Albert

Ciao Albert,
grazie mille! Cosa intendi per “non funziona”? Il codice che hai scritto è corretto, inoltre l’ho testato e nel checkout aggiunge correttamente il campo. Che problema rilevi di preciso?

Non mi compariva il campo nel form di destinazione della spedizione al cliente. Ora funziona, un virgola del ca….. si era frapposta…
Tutto ok, grazie mille.
Ciao

Posso abusare ancora della tua bontà? 🙂 e se volessi includere i nuovi "custom fileds" alla mail dell'ordine del gestore del Sito?

Sarebbe prezioso…
Grazie in anticipo per il tuo eventuale aiuto…

In risposta a Luca

Ciao Luca,
è spiegato nel paragrafo “Visualizzare il nuovo campo nella mail dell’ordine”, anche se seguendo passo passo tutti i punti della guida il campo dovrebbe già essere visibile (facendo parte dell’indirizzo di fatturazione).

Ciao Code4Life e grazie per la celere risposta.. hai ragione, lo anche messo su.. solo che non mi restituisce nessun errore nei log nè nel debug wp… la mail non arriva (con i nuovi campi inseriti) e non saprei proprio come muovermi visto che non ho errori da nessun parte… 🙂

In risposta a Luca

Ciao Luca, se la mail non arriva e non ci sono errori, potrebbe essere semplicemente un problema di configurazione (controlla la sezione email delle impostazioni di WooCommerce). Assicurati, qualora non lo avessi già fatto, di aver attivato correttamente la modalità debug di WP (leggi: https://code4life.it/guide/come-fare-il-debug-su-wordpress/). Inoltre, controlla (o richiedi al tuo hosting se non hai accesso diretto) i logs degli errori ed i logs relativi all’invio delle email dal tuo server, per capire se effettivamente vengono spedite o meno.

Ottimo tutorial…grazie, ho un problema : vorrei che il valore del campo Paese avesse la prima lettera maiuscola ed il resto minuscolo, indipendentemente di come lo scrive il cliente , come faccio?
grazie

In risposta a christian

Salve Christian,
grazie mille! Per poter agire sui valori dei campi inseriti dall’utente, consiglio di utilizzare l’hook woocommerce_checkout_posted_data:
apply_filters( ‘woocommerce_checkout_posted_data’, $data );
L’hook in questione, nella variabile $data ha un array associativo con i valori presenti nel form di checkout. In particolare:

Array(
    [billing_first_name]
    [billing_last_name]
    [billing_company]
    [billing_vat]
    [billing_country]
    [billing_address_1]
    [billing_address_2]
    [billing_postcode]
    [billing_city]
    [billing_state]
    [billing_phone]
    [billing_email]
    [order_comments]
    [shipping_first_name]
    [shipping_last_name]
    [shipping_company]
    [shipping_country]
    [shipping_address_1]
    [shipping_address_2]
    [shipping_postcode]
    [shipping_city]
    [shipping_state]
)

Quindi, nel tuo caso, basta aggiungere nel file functions.php del tema attivo:


add_action( 'woocommerce_checkout_posted_data', function( $data ) {
    $data['billing_city'] = ucfirst( $data['billing_city'] );
    return $data;
} );

che imposta tramite la funzione PHP ucfirst( $string ) la prima lettera maiuscola, nell’esempio al campo “billing_city” (Città).
Spero che questo spunto possa esserti di aiuto.
Saluti

Perfetto sei stato gentilissimo, unica cosa nella riga:
return $data
modificare in:
return $data;
(mancava il “;”). Se posso approfittare… nelle mail che spedisce dovrei far pescare anche il dato del "prezzo unitario" come lo richiamo nella mail al cliente?

In risposta a christian

Ciao Christian,
hai ragione, correggo subito!
Per prima cosa assicurati di sapere come viene identificato il campo “prezzo unitario”, dopodiché ti consiglio di effettuare un override del template:

wp-content/plugins/woocommerce/templates/email/email-order-items.php (e del suo omologo nella cartella plain/)

inserendo i dati che ti occorrono, oppure in alternativa di utilizzare l’hook:

do_action( ‘woocommerce_order_item_meta_end’, $product_id, $product, $order, $plain_text );

con cui, attraverso la variabile $product, puoi prelevare le informazioni sul prodotto di cui necessiti.

Ciao, grazie per l'utile tutorial,
lo inserito pubblicato e fatto funzionare.,
Ho aggiunto due checkbox nella pagina Billing del woocommerce. In fase di acquisto del prodotto
"Il cliente flagga i checkbox e nell’ordine che vedo in backend la risposta. Si – No…"
Ti disturbo perché non lo fa e non riesco a capire come… fare stampare nella E-mail che mi arriva per segnalarmi il nuovo ordine, questa ulteriore informazione dei checkbox che ho aggiunto.

In risposta a Manuel

Ciao Manuel,
grazie mille! Purtroppo senza vedere il codice che hai scritto, è un po’ difficile trovare la soluzione! Se hai seguito il tutorial passo passo, i campi dovrebbero visualizzarsi anche nella mail. Prova ad inviare il codice che hai scritto a supporto@code4life.it, provo a darci un’occhiata…

ciao ottimo articolo, proprio quello che cercavo.
In particolare avrei la necessita di inserire un nuovo campo di tipo select, come faccio a definirlo?
Ti ringrazio anticipatamente
Cordialmente
Denise

In risposta a Denise

Ciao Denise, grazie mille! Per definire un campo di tipo select, ti basta definire il valore “type” ed il valore “options” (fai riferimento al paragrafo Modificare i campi degli indirizzi di fatturazione o spedizione già esistenti, dove sono elencate le proprietà contenute in ogni campo).

Salve,

ho eliminato i campi indirizzi perché fondamentalmente non devo spedire i miei prodotti ma devono essere ritirati in sede, facendo un tentativo di acquisto mi risulta il seguente avviso:

Sfortunatamente non spediamo in a IT. Inserisci un indirizzo di spedizione alternativo.

Come faccio a risolvere questa problematica?

La ringrazio anticipatamente
Cordialmente
Denise

In risposta a Denise

Ciao Denise, purtroppo non ti basta eliminare i campi, in quanto WooCommerce effettua dei controlli sull’indirizzo di spedizione. Però una delle strade sarebbe di trasformare i campi minimi obbligatori in tipo “hidden” e dargli un valore di default, così da non farli visualizzare all’utente ma il form li gestirà comunque all’invio.

Salve,

Vorrei sapere se è possibile inserire un campo persone per far si che il totale aumenti di 1€ per persona ?

Cordialmente
Denise

In risposta a Denise

Salve Denise,
è possibile inserire il campo, però nel tuo caso non sarebbe un semplice campo di raccolta dati, ma dovrebbe interagire anche con il totale del carrello. In questo caso, consiglierei di dare un’occhiata ad un hook che potrebbe fare al caso tuo:
https://docs.woocommerce.com/document/add-a-surcharge-to-cart-and-checkout-uses-fees-api/
opportunamente personalizzato. In alternativa, suggerisco anche di dare un’occhiata al plugin WooCommerce Extra Product Options
che ha tra le sue opzioni la possibilità di aggiungere in ogni prodotto delle scelte aggiuntive a cui è possibile applicare una fee.

Articolo fantastico, come tutti quelli che ho letto finora su questo sito. Volevo chiedere come posso personalizzare la dicitura VAT e Billing anche in un'altra lingua? Grazie 🙂

In risposta a Ilaria

Ciao Ilaria, grazie mille! La dicitura VAT number / Tax code passa attraverso le funzioni gettex, usate da WordPress per gestire il multilingua. Quindi puoi gestirne la traduzione ad esempio utilizzando il software Poedit. Trovi un approfondimento sull’argomento qui: https://code4life.it/guide/come-tradurre-temi-e-plugins-di-wordpress-in-italiano/.

Ciao Code4Life e grazie per il tutorial. Ho applicato tutto alla lettera, secondo le mie esigenze, e tutto funge!
Mi chiedo se sia possibile togliere di default la spunta su "Spedire ad un indirizzo differente?" cosi da poter mostrare i campi solo a chi ne ha esigenza.
Grazie

In risposta a Gianni

Ciao Gianni,
in WooCommerce è presente un hook che consente di modificare il comportamento predefinito di quella checkbox. È sufficiente inserire nel file functions.php:

add_filter( ‘woocommerce_ship_to_different_address_checked’, ‘__return_false’ );

In questo modo, la checkbox risulterà non flaggata di default.

Grazie per la rapida risposta, risolto!

Ciao complimenti per i tuoi suggerimenti
Ho creato un campo "Orario consegna" e funziona correttamente.
Ora il problema è che quando confermo l'ordine questo campo non me lo vede nella schermata di riepilogo dell'ordine nella Thankyou page e sopratutto non mi viene passato il parametro (come avviene invece per tutti gli altri campi predefiniti) al plugin CHAT TO ORDER che utilizzo per inviare all'API di Whatsapp tutti i dati della prenotazione ed inviarla successivamente ad un numero di telefono.

Per caso sapresti se c'è qualcosa che posso modificare a livello di codice per consentire questo passaggio di variabile?

In risposta a Fabio

Ciao Fabio, grazie mille!
In realtà nella Thank you page il campo non va “passato”, ma va “prelevato” dal database (ormai è stato salvato lì). Dai un’occhiata al template “thankyou.php” di WooCommerce, che trovi in:

wp-content/themes/{TUO_TEMA_ATTIVO}/wooocommerce/checkout/thankyou.php

se il tuo tema ne prevede la personalizzazione, oppure, in originale:

wp-content/plugins/wooocommerce/templates/checkout/thankyou.php

Qui, puoi prelevare il campo utilizzando le funzioni di WooCommerce dell’oggetto WC_Order:

$campo = $order->get_meta( 'nome_del_tuo_campo' );

ed usarlo come vuoi. Ovviamente, ti suggerisco di effettuare gli override dei file di template, come in documentazione ufficiale:

https://docs.woocommerce.com/document/template-structure/

ed utilizzando un tema child:

https://code4life.it/guide/come-creare-un-tema-child-per-wordpress/

Riguardo invece al plugin, con le stesse modalità puoi prelevare ed utilizzare il campo a partire dall’ID ordine, ma per come utilizzarlo e dove, ti suggerisco di fare riferimento al team di supporto del plugin stesso.

Ciao Code4Life,
Mi aggiungo alla discussione di sopra, perché mi si presenta la stessa problematica. -Seguendo la guida ho aggiunto il campo "Partita IVA / Codice fiscale" che viene, sì visualizzato, ma non facendo parte dei campi predefiniti non me lo ritrovo nel riepilogo dati del cliente nelle varie mail o i qualsiasi plugin che preleva i campi predefiniti (nome, cognome, indirizzo..ecc). Ti chiedo se sia possibile far "rientrare" questo campo aggiunto nel "pacchetto" dei campi predefiniti di wooocommerce, cosi da ritrovarmelo nella lista dei dati e non come campo extra.
Grazie Anticipatamente
Esista un

In risposta a Gianni

Ciao Gianni,
il campo aggiunto, proprio in quanto tale, non può essere “predefinito”. Il meccanismo di aggiunta viene effettuato attraverso gli hooks di WooCommerce previsti proprio a questo scopo. Plugins o temi di terze part che magari recuperano i dati senza passare attraverso gli hooks o le funzioni di WooCommerce, potrebbero non visualizzare questi dati. In quel caso, è necessario provvedere ad inserirli manualmente (con override dei files di template) o contattando gli autori del plugin per capire se esistono hooks in grado di gestire i campi aggiuntivi, se non già spiegato in documentazione.
Per quanto riguarda le email, nel paragrafo “Visualizzare il nuovo campo nella mail dell’ordine” è descritto come visualizzare i nuovi campi. Suggerirei di switchare su di un tema di default (Storefront o TwentyTwenty, ad esempio) e di effettuare dei test. Dopodiché, è sempre necessario per ogni snippet di codice, approfondire il funzionamento degli hooks utilizzati e adattarlo alle proprie esigenze ed eventualmente effettuare debugging per risalire ad eventuali problematiche.

Ciao 😀
complimenti per l'articolo, molto interessante. Non ce nè molti cosi chiari e esplicativi. Ho solo una domanda. Ho visto come creare nuovi campi per esempio i dati relativi all'azienda come partita iva, pec e codice fatturazione elettronica, ma volevo sapere se era possibile creare un campo sopra il form dove scegli se sei privato o azienda e in base alla scelta mostra e nasconde dei campi. Vorrei fare questo sia nella pagina "Il mio account" e sia nella pagina relativa al Checkout. Attendo tue grazie.

Mirko

In risposta a Mirko

Ciao Mirko, ti ringrazio! In questo caso la situazione è alquanto più complessa, in quanto hai bisogno di utilizzare JavaScript per gestire la visibilità dei campi sulla base della scelta (radio button oppure select). Ti suggerisco di dare un’occhiata a questo thread in cui si parla di una cosa simile, adattandolo alle tue esigenze:

https://stackoverflow.com/questions/2777139/how-to-use-jquery-to-show-hide-divs-based-on-radio-button-selection

Complimenti per l'articolo, volevo chiederti se puoi indicarmi il modo per visualizzare l'indirizzo così:
Nome Cognome
via e numero civico
Cap Città Provincia (tutto sulla stessa linea e per la provincia possibilmente solo la sigla)
Stato
Grazie.

In risposta a Francesco

Ciao Francesco, WooCommerce formatta gli indirizzi in base al paese, per ciascuno esiste un pattern (oltre a quello eventuale di default). Per poter personalizzare questo pattern, è sufficiente utilizzare l’hook apposito:

apply_filters(‘woocommerce_localisation_address_formats’, $address_formats);

utilizzato anche nella guida per aggiungere il campo e contenuto nel file:

wp-content/plugins/woocommerce/includes/class-wc-countries.php

circa alla riga 501 (può dipendere dalla versione di WC).

Ciao e complimenti per l'articolo, molto bene fatto… Ti chiederei una cortesia, ma se io volessi che il nuovo campo, (per es. prendiamo P.iva) fosse inserito all'interno dell'indirizzo di fatturazione e non nei dettagli cliente, qual'è hook dove agire? Perchè usando "woocommerce_email_customer_details_fields" il valore della P.Iva lo mette appunto sopra l'indirizzo di fatturazione come deglio cliente. Grazie ancora e buon lavoro.

In risposta a Marco

Ciao Marco,
grazie mille!

Nel caso di indirizzo di fatturazione nella mail, puoi dare un’occhiata all’hook “woocommerce_formatted_address_replacements”.

Cordiali saluti

Grazie per la puntuale risposta… sinceramente ho pensato che sarebbe bastato cambiare hook alla tua funzione e la cosa funzionasse.. e inceve no, e quindi come avrai capito non ho idea di dove e come metterci le mani:
// Aggiunge il campo "Partita IVA / Codice fiscale" alla mail dell'ordineadd_filter( 'woocommerce_formatted_address_replacements', function( $fields,$sent_to_admin, $order ) { $fields['_billing_vat'] = array( 'label' => __( 'Vat number / Tax code', 'woocommerce' ), 'value' => get_post_meta( $order->get_ID(), '_billing_vat', true ) ); return $fields;}, 10, 3 );
————–
Credo che la cosa non sia cosi complicata, mi sono andato a cercare altrove soluzioni, ma sembra che solo a me interessa mettere i campi della fatturazione all'interno del box "Indirizzo Fatturazione". 🙁 Grazie ancora.

In risposta a Marco

Ciao Marco, in generale ogni hook ha dei parametri ed agisce su cose diverse, non è sufficiente cambiare hook ma bisogna verificare effettivamente le specifiche esigenze, che possono essere sempre diverse 🙂
La cosa migliore è sempre documentarsi come hai fatto tu partendo da un input per poi approfondire sulla specifica finalità.
Nel tuo caso, gli hooks da approfondire sono 3:

woocommerce_my_account_my_address_formatted_address: occorre per popolare i nuovi valori che desideri aggiungere
woocommerce_localisation_address_formats: occorre per modificare la formattazione dell’indirizzo oppure per aggiungere campi
woocommerce_formatted_address_replacements: occorre per fare in modo che WooCommerce sostituisca la stringa placeholder con i dati effettivi

Con questi 3 hooks, il tuo campo verrà “inglobato” nell’indirizzo.
Spero che questo spunto sia di aiuto!

E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)