Inserire un custom field nelle email ordine WooCommerce
In questo articolo vediamo come inserire un custom field nelle email ordine di WooCommerce utilizzando hook e filtri messi a disposizione dagli sviluppatori.
Il caso è molto comune: abbiamo aggiunto un campo personalizzato al checkout e vogliamo che quel dato compaia anche nella mail che il cliente o l’amministratore ricevono alla conclusione dell’ordine.
Questo può essere utile per campi generici, ma anche per dati fiscali come Codice Fiscale, Partita IVA, PEC o Codice Destinatario SDI.
Se devi lavorare sui campi del checkout puoi leggere anche la guida su come personalizzare i campi del checkout WooCommerce e l’articolo dedicato a Codice Fiscale e Partita IVA in WooCommerce.
Perché mostrare un custom field nelle email WooCommerce
Quando un cliente completa un ordine, WooCommerce invia diverse email: conferma ordine al cliente, nuova notifica ordine all’amministratore, aggiornamenti di stato e altre comunicazioni collegate al processo di acquisto.
Se nel checkout sono presenti campi personalizzati, può essere importante mostrarli anche nelle email.
Per esempio, potremmo voler mostrare:
- un codice cliente;
- una nota amministrativa;
- un riferimento interno;
- il Codice Fiscale;
- la Partita IVA;
- la PEC;
- il Codice Destinatario SDI.
In un ecommerce italiano, questi dati possono essere utili per controllare l’ordine, preparare la fattura, gestire documenti fiscali o verificare le informazioni inserite dal cliente.
Hook WooCommerce per aggiungere campi nelle email
Nel vecchio esempio veniva usato il filtro woocommerce_email_order_meta_keys. Oggi è preferibile usare il filtro woocommerce_email_order_meta_fields, più adatto alle versioni moderne di WooCommerce.
Il codice va inserito nel file functions.php del tema child oppure, meglio ancora, in un piccolo plugin personalizzato.
Codice per inserire custom field nelle email WooCommerce
add_filter( 'woocommerce_email_order_meta_fields', 'dot4all_custom_fields_email_ordine', 10, 3 );
function dot4all_custom_fields_email_ordine( $fields, $sent_to_admin, $order ) {
$campo_1 = $order->get_meta( '_custom_field_1' );
$campo_2 = $order->get_meta( '_custom_field_2' );
if ( ! empty( $campo_1 ) ) {
$fields['custom_field_1'] = array(
'label' => 'Campo Personalizzato 1',
'value' => $campo_1,
);
}
if ( ! empty( $campo_2 ) ) {
$fields['custom_field_2'] = array(
'label' => 'Campo Personalizzato 2',
'value' => $campo_2,
);
}
return $fields;
}
In questo esempio recuperiamo due campi personalizzati salvati nell’ordine WooCommerce e li aggiungiamo al riepilogo dei dati mostrati nelle email.
I meta key _custom_field_1 e _custom_field_2 sono solo esempi. Nel tuo caso devono essere sostituiti con le chiavi reali dei campi salvati nell’ordine.
Come funziona il codice
Il filtro woocommerce_email_order_meta_fields permette di aggiungere dati personalizzati alle email ordine di WooCommerce.
La funzione riceve tre parametri:
- $fields: l’elenco dei campi già presenti;
- $sent_to_admin: indica se l’email è destinata all’amministratore;
- $order: l’oggetto ordine WooCommerce.
Attraverso $order->get_meta() recuperiamo il valore salvato nell’ordine.
Se il campo non è vuoto, lo aggiungiamo all’array $fields indicando una label e un valore.
Alla fine restituiamo $fields, così WooCommerce può includere i dati nell’email.
Esempio con dati fiscali WooCommerce
Se il tuo checkout raccoglie dati fiscali, puoi usare lo stesso approccio per mostrare quei dati nelle email ordine.
Per esempio, potresti voler includere Codice Fiscale, Partita IVA, PEC o Codice SDI.
add_filter( 'woocommerce_email_order_meta_fields', 'dot4all_dati_fiscali_email_ordine', 10, 3 );
function dot4all_dati_fiscali_email_ordine( $fields, $sent_to_admin, $order ) {
$codice_fiscale = $order->get_meta( '_billing_cf' );
$partita_iva = $order->get_meta( '_billing_piva' );
$pec = $order->get_meta( '_billing_pec' );
$sdi = $order->get_meta( '_billing_sdi' );
if ( ! empty( $codice_fiscale ) ) {
$fields['codice_fiscale'] = array(
'label' => 'Codice Fiscale',
'value' => $codice_fiscale,
);
}
if ( ! empty( $partita_iva ) ) {
$fields['partita_iva'] = array(
'label' => 'Partita IVA',
'value' => $partita_iva,
);
}
if ( ! empty( $pec ) ) {
$fields['pec'] = array(
'label' => 'PEC',
'value' => $pec,
);
}
if ( ! empty( $sdi ) ) {
$fields['sdi'] = array(
'label' => 'Codice SDI',
'value' => $sdi,
);
}
return $fields;
}
Attenzione: i nomi dei meta field possono cambiare in base al plugin o al codice usato per creare i campi nel checkout.
Prima di usare il codice in produzione, controlla sempre quali chiavi vengono realmente salvate nell’ordine WooCommerce.
Custom field, checkout e fatturazione elettronica
Mostrare i custom field nelle email è utile, ma non basta per costruire un flusso fiscale completo.
Se il tuo ecommerce deve gestire dati fiscali italiani, è importante che Codice Fiscale, Partita IVA, PEC e SDI siano raccolti correttamente nel checkout, salvati nell’ordine e disponibili anche nei documenti fiscali.
Per gestire questi dati in modo più completo puoi valutare il plugin WooCommerce Partita IVA e Codice Fiscale PRO.
Se invece devi gestire XML, invio allo SDI o processi fiscali più articolati, puoi approfondire la guida sulla fatturazione elettronica WooCommerce Italia, il modulo per invio fatture elettroniche allo SDI da WooCommerce oppure la suite fiscale WooCommerce.
Prima di pubblicare la modifica
Prima di usare il codice su un sito in produzione, consigliamo di fare alcuni test.
- Verifica che il campo venga salvato correttamente nell’ordine.
- Controlla la chiave meta reale del campo.
- Effettua un ordine di test.
- Controlla l’email ricevuta dal cliente.
- Controlla l’email ricevuta dall’amministratore.
- Verifica che il dato non sia vuoto.
- Controlla eventuali plugin che modificano le email WooCommerce.
Se il campo è fiscale, controlla anche che lo stesso dato sia disponibile nell’area ordine e nei documenti collegati.
Conclusione
Inserire un custom field nelle email ordine WooCommerce è utile quando vogliamo rendere visibili informazioni aggiuntive raccolte nel checkout.
Il filtro woocommerce_email_order_meta_fields permette di aggiungere questi dati alle email in modo ordinato e compatibile con WooCommerce moderno.
Per un ecommerce italiano, questa logica può essere usata anche per mostrare dati fiscali come Codice Fiscale, Partita IVA, PEC o Codice SDI, purché siano stati salvati correttamente nell’ordine.
Provate sempre su un ordine di test prima di applicare la modifica al sito in produzione.






Buongiorno dot4all,
ho letto diversi tuoi articoli e mi sono stati molto utili. Ora volevo chiederti una particolarità che non riesco implementare. Vorrei inserire il campo Codice Fiscale nella sezione “Dettaglio” e nella sezione “Indirizzo di fatturazione”(in basso) nelle email, come avviene con il campo Ragione Sociale (se c’è lo inserisce e visualizza se non c’è non lo fa visualizzare). Potresti aiutarmi ?
Ti ringrazio in anticipo per l’attenzione.
S.
Il codice per l’inserimento campo codice fiscale in functions.php :
// Aggiungere il campo Codice Fiscale MYACCOUNT E CHECKOUT
add_filter( ‘woocommerce_billing_fields’ , ‘billing_field_cf’ );
function billing_field_cf( $fields ) {
$fields[‘billing_cf’] = array(
‘label’ => __(‘C.F. / P.IVA / VAT’, ‘woocommerce’),
‘placeholder’ => _x(‘C.F. / P.IVA / VAT’, ‘placeholder’, ‘woocommerce’),
‘class’ => array(‘form-row-wide’),
‘show’ => true
);
return $fields;
}
// Aggiungiamo il campo Codice Fiscale ADMIN
add_filter( ‘woocommerce_admin_billing_fields’ , ‘admin_field_cf’ );
function admin_field_cf( $fields ) {
$fields[‘cf’] = array(
‘label’ => __(‘C.F. / P.IVA / VAT’, ‘woocommerce’),
‘show’ => true
);
return $fields;
}
// Ordiniamo la posizine dei campi nel ceckout
add_filter(‘woocommerce_checkout_fields’, ‘order_fields’);
function order_fields($fields) {
$order = array(
“billing_first_name”,
“billing_last_name”,
“billing_company”,
“billing_cf”,
“billing_email”,
“billing_phone”,
“billing_address_1”,
“billing_address_2”,
“billing_postcode”,
“billing_country”,
“billing_state”,
);
foreach($order as $field){
$ordered_fields[$field] = $fields[“billing”][$field];
unset($fields[“billing”][$field]);
}
foreach($tmp_fields = $fields[‘billing’] as $key => $field){
$ordered_fields[$key] = $fields[“billing”][$key];
}
$fields[“billing”] = $ordered_fields;
return $fields;
}
// Stile personalizzato per il campo Codice Fiscale / Partita I.V.A.
function custom_colors() {
echo ‘
._billing_cf_field{clear: both!important;width: 100%!important;}
‘;
}
add_action(‘admin_head’, ‘custom_colors’);