
Contenuto mancante
1- Disabilità ADS Block e ricarica la pagina
2- Ricarica la pagina
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 🙂

Contenuto mancante
1- Disabilità ADS Block e ricarica la pagina
2- Ricarica la pagina
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' ); } |
ciao!
utilizzando il plugin se non volessi che i campi partita iva e codice fiscale siano obbligatori come faccio??
Ciao Giulia,
nell’array trovi l’argomento “required” se ha valore “true” il campo è obbligatorio, se lo metti a “false” non è obbligatorio.
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 Luca,
i codici li commento di proposito, basta leggere..
Rimuovi questa stringa :
//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' );
}
Grazie mille, scusa non avevo intuito che bisognava cancellare la stringa. grazie ancora
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 Pasquale, va modificato il plugin che utilizzi per la fatturazione.
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!
Grazie Fabio, ottima idea.
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 Stefano,
il ruolo WP lo assegna solo a registrazione avvenuta, quindi non puoi fare un controllo PHP durante la registrazione, quello che puoi fare è una condizione sul campo select (che presumo ci sia se mi dici che hai 2 ruoli).