Aggiungere P.Iva e Codice Fiscale a Woocommerce di WordPress

Se avete un e-commerce o programmate di aprirne uno con il famigerato WooCommerce è probabile che vi serva qualche campo di registrazione in più di quelli di default.

Nello specifico 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 modificabile da ogni pagina dove vengono visualizzati i campi di testo. Inoltre questi due campi appariranno anche nell’area di amministrazione, visibili e modificabili dagli amministratori.

Ma adesso vediamo un po di codice! Iniziamo con il dire che queste porzioni di codice vanno aggiunte al file function del tema che utilizziamo, cioè: “/www.miosito.it/wp-content/themes/miotema/functions.php”.

Il codice sotto è piuttosto semplice e commentato. In buona sostanza se non vi servono che questi due nuovi campi vi basterà copiare e incollare il codice sottostante nel vostro functions.

That’s all folks!


/*    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');


/*
    that's all folks
*/

Tags:

Commenti