Può succedere che nei siti web sviluppati in WooCommerce, soprattutto quelli in cui si vende anche in Italia, sia necessaria la compilazione del campo Codice Fiscale e Partita Iva, per esempio per emettere successivamente una fattura.
WooCommerce di default non possiede questi due campi però è possibile attraverso delle funzioni aggiungere dei campi come ho spiegato qui.
Per chi non ha dimestichezza con il codice ho sviluppato un plugin che potete scaricare gratuitamente cliccando sul link in alto all’articolo.
Invece per i più audaci, lascio il codice completo 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
//creo il campo codice fiscale add_filter( 'woocommerce_checkout_fields' , 'codice_fiscale' ); function codice_fiscale( $fields ) { $fields['billing']['codice_fiscale'] = array( 'label' => __('Codice Fiscale', 'woocommerce'), 'placeholder' => _x('Codice Fiscale', 'placeholder', 'woocommerce'), 'required' => true, 'class' => array('form-row-last'), 'clear' => true ); return $fields; } add_action( 'woocommerce_checkout_update_order_meta', 'codice_fiscale_order_meta' ); function codice_fiscale_order_meta( $order_id ) { if ( ! empty( $_POST['codice_fiscale'] ) ) { update_post_meta( $order_id, 'Codice Fiscale', sanitize_text_field( $_POST['codice_fiscale'] ) ); } } //inserisco il codice fiscale nel back end add_action( 'woocommerce_admin_order_data_after_billing_address', 'codice_fiscale_order_meta_admin', 10, 1 ); function codice_fiscale_order_meta_admin($order){ echo '<p><strong>'.__('Codice Fiscale').':</strong> ' . get_post_meta( $order->id, 'Codice Fiscale', true ) . '</p>'; } //inserisco il codice fiscale nella mail dell'ordine add_filter('woocommerce_email_order_meta_keys', 'my_custom_fiscale_order_meta_keys'); function my_custom_fiscale_order_meta_keys( $keys ) { $keys[] = 'Codice Fiscale'; return $keys; } //controllo che il codice fiscale sia compilato add_action('woocommerce_checkout_process', 'required_cf_checkout_field_process'); function required_cf_checkout_field_process() { if ( ! $_POST['codice_fiscale'] ) wc_add_notice( __( 'Compila il campo Codice Fiscale .' ), 'error' ); } //creo il campo partita iva add_filter( 'woocommerce_checkout_fields' , 'partita_iva' ); function partita_iva( $fields ) { $fields['billing']['partita_iva'] = array( 'label' => __('Partita Iva', 'woocommerce'), 'placeholder' => _x('Partita Iva', 'placeholder', 'woocommerce'), 'required' => true, 'class' => array('form-row-last'), 'clear' => true ); return $fields; } add_action( 'woocommerce_checkout_update_order_meta', 'partita_iva_order_meta' ); function partita_iva_order_meta( $order_id ) { if ( ! empty( $_POST['partita_iva'] ) ) { update_post_meta( $order_id, 'Partita Iva', sanitize_text_field( $_POST['partita_iva'] ) ); } } //inserisco il partita iva nel back end add_action( 'woocommerce_admin_order_data_after_billing_address', 'partita_iva_order_meta_admin', 10, 1 ); function partita_iva_order_meta_admin($order){ echo '<p><strong>'.__('Partita Iva').':</strong> ' . get_post_meta( $order->id, 'Partita Iva', true ) . '</p>'; } //inserisco il partita iva nella mail dell'ordine add_filter('woocommerce_email_order_meta_keys', 'my_custom_partita_iva_order_meta_keys'); function my_custom_partita_iva_order_meta_keys( $keys ) { $keys[] = 'Partita Iva'; return $keys; } //controllo che il partita iva sia compilato add_action('woocommerce_checkout_process', 'required_pi_checkout_field_process'); function required_pi_checkout_field_process() { if ( ! $_POST['partita_iva'] ) wc_add_notice( __( 'Compila il campo Partita Iva .' ), 'error' ); } |
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
ciao!
utilizzando il plugin se non volessi che i campi partita iva e codice fiscale siano obbligatori come faccio??
Ciao Alessio, ottimi articoli per prendere spunti e soluzioni.
ho provato ad inserire il plugin in questione e mettendo il “false” il campo partita iva ( lo voglio visualizzare ma non renderlo obbligatorio) l’asterisco è sparito ma se continuo con l’ordine mi da errore riportando “Compila il campo Partita Iva” .
come faccio? grazie in anticipo.
Luca
ciao
ho provato il plug in ma come faccio ad inserire i dati nella fattura?
C’è un plug in con cui si integra ? io per esempio sto usando WooCommerce PDF Invoices & Packing Slips.
Grazie
Ciao Alessio, ti ringrazio per questo esempio di codice che mi ha permesso di inserire i campi senza aggiungere ulteriori plugin (cerco sempre di limitare il più possibile i plugin installati su WP).
Prendendo spunto dal tuo codice ho aggiunto una funzione per creare un campo legato al consenso privacy: https://codeshare.io/2KPEw8
Inoltre con una modifica alla funzione di controllo del codice fiscale (https://codeshare.io/5em6J9) ed aggiungendo le funzioni di validazione di Manuel Marangoni (http://www.manuelmarangoni.it/sir-bit/705/php-controllare-le-variabili-nei-form-codice-fiscale-partita-iva-email-e-prezzo/) ho aggiunto una validazione “base” del codice fiscale (lunghezza, carattere di controllo).
Si tratta di una validazione base, l’ideale sarebbe controllare anche la validità del codice comune, ma per scoraggiare l’inserimento di dati falsi può essere sufficiente.
Grazie ancora e a presto!
Ciao Fabio,
ho dato un’occhiata ai link, ma essendo neofita avrei bisogno esattamente del codice finale miscelato. Potresti postarlo per favore? Grazie
Ciao Alessio io ho un piccolo problema
Sto realizzando un sito con 2 user roles.
Uno customer (cliente) e l’altro company (aziendale).
Mi servirebbe solo il campo “Partita Iva” ma visibile e attivo solo ed unicamente per il ruolo “company” .
Come si può fare utilizzando il codice da te postato?
Grazie in anticipo.
Ciao Alessio
Grazie per il plugin, è davvero utile!
Il mio cliente però vorrebbe che al posto di “Società” e “Privato” ci fosse scritto “Fattura” e “Ricevuta”, è possibile cambiare i due nomi? Se sì, dove?
Ti ringrazio!
Ciao Alessio, grazie mille articolo strepitoso!
E’ possibile far comparire i due campi codice fiscale e partita iva anche nella pagina del proprio account nel front-end e permettere all’utente di modificare entrambi i campi insieme agli altri campi di Billing?
Grazie mille
saluti
Michele
Buongiorno , gentilmente vorrei sapere se e’ possibile inserire come campo obbligatorio (aziende) P.IVA e C.F
Perché se una azienda e’ una società di persone , si sa che la P.IVA e’ uguale al C. F, ma se l’azienda e’ una ditta individuale necessita anche del C.F. Spesso mi ritrovo a dover chiamare il cliente e chiedere che tipo di società e poi eventualmente chiedere il C.F.
Vorrei avere il campo P.iva e C.F obbligatorio , se sono uguali…. basta che ripetano la P.iva .
Grazie, ciao
Ciao ho installato il plugin e funziona correttamente, l’unica cosa me lo mette in fondo. Come posso fare per far mettere le scritte sotto a “Nome e Cognome”? Grazie, Chiara
Funziona, è semplice e pulito come piace a me.
Complimenti.
Ciao Alessio e grazie sempre,
volevo chiederti se è possibile condizionare la visibilità dei campi alla nazione, cioè far apparire i campi solo se si seleziona ITALIA.
grazie
domenico
Ciao Angelo,
intanto grazie per il codice messo a disposizione.
Volevo chiederti se c’è modo, di riproporre il campo codice fiscale precedentemente inserito dall’utente in fase di registrazione, all’interno del checkout durante in occasione di un secondo acquisto da loggato.
Da una prova fatta il campo text rimane vuoto, in attesa dell’inserimento del campo che altrimenti viene inviato vuoto.
Grazie mille
Si, ok. Ma come fai a verificare che Partita IVA e CF siano inseriti correttamente e abbiano formato valido??
Buongiorno Alessandro, innanzitutto complimenti per il plugin. Ho provato tantissimi sistemi per cercare di ottenere di far vedere il codice fiscale solo agli italiani ma non ho trovato alternative valide.
Ho però problemi con alcuni utenti safari dagli stati uniti, a cui continua a comparire il codice fiscale anche sui paesi esteri. A cosa potrebbe essere legato? Ho provato a escludere la pagina di checkout dalla cache, se potesse essere un problema di questo genere ma niente.
Ti ringrazio
Ciao, ma come faccio poi a vedere nella mail che ricevo dell’ordine, i campi della partita iva e del codice univoco?
Buongiorno! Grazie mille per questo codice, mi ha risolto davvero un problema ed è ben spiegato! Ho però una domanda… Sono riuscita a modificarlo in modo da rendere la P.IVA non necessaria e ho aggiunto la voce “Codice destinatario” per la fatturazione elettronica. Il mio problema è che tutte e tre le caselle sono raggruppate in uno spazio ristretto, alcune affiancate… Come posso fare perché siano una sotto l’altra? Grazie mille!
Salve ho provato il code funziona perfettamente, fantastico. Ma ho un problema ,nel back end ( ordine cliente, non compaiono i dati p.iva ect) ma funziona solo in front end.Sara’ cambiato qualcosa con la nuova versione woocommerce ?
Ciao Alessio, ottima guida! Una cosa. Se un utente compra oggi e si registra, un domani che torna e mette username e password nel checkout field del codice fiscale deve rimetterlo tutte le volte.
Non c’è la possibilità di richiamarlo in fase di checkout se l’utente è già registrato?