Se hai un e-commerce o programmi di aprirne uno con il famigerato plugin WooCommerce di WordPress è probabile che ti serva qualche campo di registrazione in più di quelli di default.
Nello specifico, in questo articolo, aggiungeremo i campi Partita Iva e Codice Fiscale come campi dell’ “indirizzo di fatturazione” nell’area utente del profilo e nella fase di checkout di un acquisto. Ovviamente, questi dati saranno modificabili da ogni pagina dove vengono visualizzati i campi di testo, quindi, ovunque ci sia un form che li richiede. Inoltre, questi campi appariranno anche nell’area di amministrazione, visibili e modificabili dagli amministratori.
Come aggiungere i campi Partita Iva e Codice Fiscale a WooCommerce
Vediamo un po’ di codice! Innanzitutto, per poter modificare questi campi devi aver accesso al file functions del tema che vuoi modificare. Se hai l’accesso, possiamo continuare!
Per aggiungere i campi P. IVA e C.F. a WooCommerce devi aggiungere delle porzioni di codice al file functions del tema, cioè: “/www.miosito.it/wp-content/themes/miotema/functions.php”.
Qui sotto ti abbiamo fornito un codice che è piuttosto semplice e commentato. In buona sostanza, ti basterà copiare e incollare questo codice nel tuo file functions del tema e avrai aggiunto in pochi copia/incolla entrambi i campi per Codice Fiscale e Partita Iva su WooCommerce.
That’s all folks!
<?php
/* Imposto i due nuovi campi custom e li mostro nell'area personale dell'utente (billing address)
*/
function xyz123_set_customer_billing_fields_in_profile( $fields )
{
$fields['billing_vat'] = array(
'label' => __('VAT Number', 'woocommerce' ),
'placeholder' => '',
'required' => false,
'clear' => false,
'type' => 'text',
'class' => array('form-row-wide')
);
$fields['billing_nin'] = array(
'label' => __('NIN Code', 'woocommerce' ),
'placeholder' => '',
'required' => false,
'clear' => false,
'type' => 'text',
'class' => array('form-row-wide')
);
return $fields;
}
add_filter('woocommerce_billing_fields', 'xyz123_set_customer_billing_fields_in_profile');
/* Mostro i campi custom nella pagina di checkout
*/
function xyz123_set_customer_billing_fields_in_checkout( $fields )
{
$fields['billing']['billing_vat'] = array(
'label' => __('VAT Number', 'woocommerce' ),
'placeholder' => '',
'required' => false,
'clear' => false,
'type' => 'text',
'class' => array('form-row-wide')
);
$fields['billing']['billing_nin'] = array(
'label' => __('NIN Code', 'woocommerce' ),
'placeholder' => '',
'required' => false,
'clear' => false,
'type' => 'text',
'class' => array('form-row-wide')
);
return $fields;
}
add_filter('woocommerce_checkout_fields', 'xyz123_set_customer_billing_fields_in_checkout');
/* Mostro i campi custom nel profilo dell'utente lato amministrazione
*/
function xyz123_set_customer_billing_fields_in_customer_profile_admin_side( $fields )
{
$fields['billing']['fields']['billing_vat'] = array(
'label' => __( 'VAT Number', 'woocommerce' ),
'description' => ''
);
$fields['billing']['fields']['billing_nin'] = array(
'label' => __( 'NIN Code', 'woocommerce' ),
'description' => ''
);
return $fields;
}
add_filter( 'woocommerce_customer_meta_fields', 'xyz123_set_customer_billing_fields_in_customer_profile_admin_side' );
/* Compilo con i dati del profilo (billing address) i campi custom nel checkout
*/
function xyz123_populate_customer_billing_fields_in_checkout( $input, $key )
{
global $current_user;
if ( $key == 'billing_vat' )
return get_user_meta( $current_user->ID, 'billing_vat', true );
if ( $key == 'billing_nin' )
return get_user_meta( $current_user->ID, 'billing_nin', true );
}
add_filter('woocommerce_checkout_get_value', 'xyz123_populate_customer_billing_fields_in_checkout', 10, 2 );
/* Salvo le modifiche sui campi custom effettuate dall'area personale dell'utente (billing address)
*/
function xyz123_store_customer_billing_fields_in_address( $user_id )
{
if ( ! empty( $_POST['billing_vat'] ) )
update_user_meta( $user_id, 'billing_vat', sanitize_text_field( $_POST[ 'billing_vat' ] ) );
if ( ! empty( $_POST['billing_nin'] ) )
update_user_meta( $user_id, 'billing_nin', sanitize_text_field( $_POST[ 'billing_nin' ] ) );
if ( empty( $_POST[ 'billing_nin' ] ) && empty( $_POST[ 'billing_vat' ] ) )
wc_add_notice( __( 'You must insert a NIN Code or Vat Code.' ), 'error' );
}
add_action( 'woocommerce_customer_save_address', 'xyz123_store_customer_billing_fields_in_address' );
/* Salvo le modifiche sui campi custom effettuate nel checkout dell'utente
*/
function xyz123_store_customer_billing_fields_in_checkout( $user_id )
{
if ( ! empty( $_POST['billing_vat'] ) )
update_user_meta( $user_id, 'billing_vat', sanitize_text_field( $_POST[ 'billing_vat' ] ) );
if ( ! empty( $_POST['billing_nin'] ) )
update_user_meta( $user_id, 'billing_nin', sanitize_text_field( $_POST[ 'billing_nin' ] ) );
}
add_action( 'woocommerce_checkout_update_user_meta', 'xyz123_store_customer_billing_fields_in_checkout' );
/* Valido le modifiche sui campi custom effettuate nel checkout dell'utente.
* Almeno uno dei due campi deve essere compilato.
*/
function xyz123_validate_customer_billing_fields_in_checkout()
{
$billing_vat = trim( $_POST['billing_vat'] );
$billing_nin = trim( $_POST['billing_nin'] );
if ( empty( $billing_vat ) && empty( $billing_nin ) )
wc_add_notice( __( 'You must insert a NIN Code or Vat Code.' ), 'error' );
}
add_action('woocommerce_checkout_process', 'xyz123_validate_customer_billing_fields_in_checkout');
/* Aggiungo campi custom nel riepilogo ordine
*/
function xyz123_add_customer_billing_fields_in_admin_order_meta( $order )
{
$billing_vat = get_user_meta( $order->get_user_id(), 'billing_vat', true );
$order_billing_vat = get_post_meta( $order->id, '_billing_vat', true );
$billing_nin = get_user_meta( $order->get_user_id(), 'billing_nin', true );
$order_billing_nin = get_post_meta( $order->id, '_billing_nin', true );
$client_vat_label = '<p><strong>' . __('VAT Number', 'woocommerce' ) . </strong><br>;
$client_vat_label .= ( $billing_vat ) ? '(From Billing Address)' . $billing_vat : ( $order_billing_vat ) ? '(From Order Note)' . $order_billing_vat : 'N/D' ;
echo $client_vat_label . '</p>';
$billing_nin_label = '<p><strong>' . __('NIN Code', 'woocommerce' ) . </strong><br>;
$billing_nin_label .= ( $billing_nin ) ? $billing_nin : ( $order_billing_nin ) ? $order_billing_nin : 'N/D' ;
echo $billing_nin_label . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'xyz123_add_customer_billing_fields_in_admin_order_meta', 10, 1 );
/* Salvataggio campi fattura elettronica se utente non chiede di registrarsi (ospite)
*/
function xyz123_before_checkout_create_order( $order_id )
{
$billing_pec = trim( $_POST['billing_pec'] );
$billing_nin = trim( $_POST['billing_nin'] );
update_post_meta( $order_id, '_billing_nin', sanitize_text_field( $billing_nin ) );
update_post_meta( $order_id, '_billing_pec', sanitize_text_field( $billing_pec ) );
}
add_action('woocommerce_checkout_update_order_meta', 'xyz123_before_checkout_create_order');
/*
that's all folks
*/
Ovviamente la struttura del codice è la stessa qualora si voglia aggiungere il campo SDI per la fatturazione elettronica, vi basterà sostituire le etichette e il nome delle variabili.
Ti è piaciuto questo articolo su come inserire i campi per la fatturazione a WooCommerce? Oppure vorresti sapere di più? Lasciaci un commento!
Tags: wordpress