Chi conosce WordPress e Woocommerce sa che il form di registrazione integrato è molto semplice e non permette di inserire dei campi aggiuntivi. In questa guida spiegherò come aggiungere dei campi nel modulo di registrazione WordPress e Woocommerce senza dover utilizzare dei plugin ma inserendo il codice direttamente nel file function.php del tema.
Attivare modulo di registrazione
Innanzitutto occorre abilitare il modulo di registrazione nelle impostazioni andando su Woocommerce —> Impostazioni —> Account. In questo modo, nella pagina Mio account di Woocommerce comparirà il modulo di registrazione di fianco al modulo di accesso.
Come aggiungere campi personalizzati
Per includere campi aggiuntivi come nome, cognome, numero di telefono e così via, basta inserire le seguenti righe di codice alla fine del functions.php che si trova nella cartella del tema (sarebbe meglio se si trovasse nel vostro child-theme).
function wooc_extra_register_fields() {?> <p class="form-row form-row-wide"> <label for="reg_billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?></label> <input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php esc_attr_e( $_POST['billing_phone'] ); ?>" /> </p> <p class="form-row form-row-first"> <label for="reg_billing_first_name"><?php _e( 'First name', 'woocommerce' ); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>" /> </p> <p class="form-row form-row-last"> <label for="reg_billing_last_name"><?php _e( 'Last name', 'woocommerce' ); ?><span class="required">*</span></label> <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>" /> </p> <div class="clear"></div> <?php } add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields' );
Di seguito è riportato un elenco di tutti i campi personalizzati che possono essere aggiunti al modulo di registrazione e possono essere associati all’indirizzo di fatturazione.
- billing_first_name
- billing_last_name
- billing_company
- billing_address_1
- billing_address_2
- billing_city
- billing_postcode
- billing_country
- billing_state
- billing_email
- billing_phone
Convalidare i campi personalizzati
Per convalidare questi campi personalizzati includere le seguenti righe di codice sempre all’interno del file functions.php che si trova nella cartella dei temi. Modificare la sezione $validation_errors per avere un messaggio di errore personalizzato in base alle vostre esigenze:
/** * Per validare i campi. */ function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) { if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) { $validation_errors->add( 'billing_first_name_error', __( '<strong>Errore</strong>: Campo nome obbligatorio!', 'woocommerce' ) ); } if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) { $validation_errors->add( 'billing_last_name_error', __( '<strong>Error</strong>: Campo cognome obbligatorio!.', 'woocommerce' ) ); } return $validation_errors; } add_action( 'woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 3 );
Come salvare i dati sul database
Chiaramente è necessario che i campi vengano memorizzati sul database WordPress. Per far ciò inserite il seguente codice alla fine del file function.php:
/** * Salvare i valori nel database */ function wooc_save_extra_register_fields( $customer_id ) { if ( isset( $_POST['billing_phone'] ) ) { // Phone input filed which is used in WooCommerce update_user_meta( $customer_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) ); } if ( isset( $_POST['billing_first_name'] ) ) { //First name field which is by default update_user_meta( $customer_id, 'first_name', sanitize_text_field( $_POST['billing_first_name'] ) ); // First name field which is used in WooCommerce update_user_meta( $customer_id, 'billing_first_name', sanitize_text_field( $_POST['billing_first_name'] ) ); } if ( isset( $_POST['billing_last_name'] ) ) { // Last name field which is by default update_user_meta( $customer_id, 'last_name', sanitize_text_field( $_POST['billing_last_name'] ) ); // Last name field which is used in WooCommerce update_user_meta( $customer_id, 'billing_last_name', sanitize_text_field( $_POST['billing_last_name'] ) ); } } add_action( 'woocommerce_created_customer', 'wooc_save_extra_register_fields' );
Ecco fatto. Con questi semplici passaggi potrete aggiungere al form di registrazione di Woocommerce i campi che desiderate.
Ciao Carmelo,
grazie per la guida, ma io l ho seguita passo passo e non visualizzo i nuovi campi nel form di registrazione 🙁
Luca
Hai caricato il codice nel function.php del child-theme?
Ciao Carmelo,
si può inserire un campo per inserimento partita iva o comunque un campo ‘vuoto’ con scritto P.iva<?
Grazieee!!
Ciao ci sono diversi plugin che lo fanno. Uno è Italian Addon… oppure Checkout Manager…
Ti consiglio di provare con quelli che è più semplice e veloce
Ciao Carmelo, ma è possibile inserire 2 form di registrazione in woocommerce?
Devo crearne uno per “diventa rivenditore” e uno per “diventa ambassador”
Grazie mille 🙂
Dovresti affidarti a dei plugin che permettono la distinzione tra le registrazioni