Aggiungere un campo personalizzato al form di registrazione in WordPress

Autore: Gabriele Bellucci
Categorie: Wordpress
Nessun commento
← Torna al Blog

Aggiungere un campo personalizzato al form di registrazione in WordPress

aggiungere campo personalizzato form registrazione wordpress

Aggiungere un campo personalizzato durante la registrazione automatica di nuovi utenti in WordPress

Aggiungere un campo personalizzato al form di registrazione WordPress può essere utile se vogliamo conoscere meglio i sottoscritori del nostro sito web, oppure se abbiamo bisogno di dati aggiuntivi per una campagna di marketing.

Nel mio esempio durante la registrazione si dovrà inserire anche un Hobby principale, ovviamente potete inserire anche altri campi obbligatori ma per rendere più comprensibile questo tutorial, mi soffermerò solo su un singolo campo. Ovviamente potete utilizzare o modificare questo codice a seconda delle vostre esigenze. Il codice di questo tutorial dovrà essere inserito all’interno del file functions.php.

1. Aggiungere un nuovo elemento al form

La prima cosa da fare è inserire un un nuovo elemento al form di registrazione, per fare questo utilizziamo l’hook di register_form, ed andiamo a creare un nuovo campo input per il nostro dato aggiuntivo.

 <?php add_action('register_form','myplugin_register_form');
 
    function myplugin_register_form (){
        $hobby = ( isset( $_POST['hobby'] ) ) ? $_POST['hobby']: ''; //salvataggio del campo hobby se i dai sono già stati inviati
        ?>
        <p>
            <label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?><br />
                <input type="text" name="hobby" id="hobby" class="input" value="<?php echo esc_attr(stripslashes($hobby)); ?>" size="25" /></label>
        </p>
        <?php
    }

2. Validazione dei dati inseriti

Per effettuare la validazione dei dati inseriti (in questo caso un hobby principale) si dovrà utilizzare l’Hook registration_errors, in questo caso controlleremo che il campo non sia vuoto in quanto vogliamo renderlo obbligatorio. Ovviamente potete eseguire qualsiasi altro controllo sui dati inseriti, a seconda delle vostre esigenze.

    add_filter('registration_errors', 'myplugin_registration_errors', 10, 3);
    function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
 
        if ( empty( $_POST['hobby'] ) ) // controlla che il campo hobby non sia vuoto, rendendolo cosi obbligatorio
            $errors->add( 'hobby_error', __('<strong>ERROR</strong>: Devi inserire un hobby principale','registrazione-utenti') );
 
        return $errors;
 
    }

3. Salvataggio dei dati per l’utente che si è appena registrato

Adesso dobbiamo salvare i nuovi metadati per l’utente, utilizzando l’Hook user_register. Questo Hook ci permette di accedere alle informazioni dell’utente subito dopo che è stato aggiunto al database.

 add_action('user_register', 'myplugin_user_register');
    function myplugin_user_register ($user_id) {
        if ( isset( $_POST['hobby'] ) )
            update_user_meta($user_id, 'hobby', $_POST['hobby']);
    }

update_user_meta permette di aggiungere i metadati all’utente che è appena stato inserito passando come parametri il suo ID, il nome del meta value

4. Visualizzare i dati nel back end

I dati adesso sono salvati correttamente all’interno della tabella wp_usermeta, ma non possiamo visualizzarli nel backend. Per ovviare a questo dobbiamo creare una sezione apposita per la visualizzazione all’interno del profilo di ogni utente. Nel codice sottostante ci occupiamo solo di rendere a video nella pagina profilo utente i dati inseriti durante la registrazione.

Come potete notare vengono utilizzati due Hook differenti, perchè in wordpress possiamo differenziare le visualizzazioni del profilo a seconda che sia il proprietario a visualizzarlo, oppure un altro utente. Nell’esempio non ci occupiamo di questa particolare casistica e il profilo sarà sempre visualizzato con le informazioni aggiuntive.

<?php
add_action('show_user_profile','show_the_new_meta_values'); // hook utilizzato quando un utente sta visualizzando il suo profilo
 add_action('edit_user_profile','show_the_new_meta_values'); // hook utilizzato quando un utente sta visualizzando il profilo di un altro utente
 
 function show_the_new_meta_values($user)
 {
 
	$hobby= get_user_meta($user->ID,'hobby', true);
	?>
	<h3><?php _e('Informazioni aggiuntive','registrazione-utenti')?></h3>
<table class="form-table">
	<tr>
		<th><label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?></label></th>
		<td><input type="text" name="hobby" id="hobby" value="<?php echo esc_attr($hobby); ?>" class="regular-text" /></td>
	</tr>
</table>
	<?php
 }

5. Conclusioni

Ecco il codice completo del tutorial:

<?php
/*
 * // Aggiunta del nuovo elemento al form di registrazione
 */
 
 
 //Aggiunta del nuovo elemento al form di registrazione
    add_action('register_form','myplugin_register_form');
 
    function myplugin_register_form (){
        $hobby = ( isset( $_POST['hobby'] ) ) ? $_POST['hobby']: ''; //salvataggio del campo hobby
        ?>
        <p>
            <label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?><br />
                <input type="text" name="hobby" id="hobby" class="input" value="<?php echo esc_attr(stripslashes($hobby)); ?>" size="25" /></label>
        </p>
        <?php
    }
 
    // Validazione dei dati inseriti.
    add_filter('registration_errors', 'myplugin_registration_errors', 10, 3);
    function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
 
        if ( empty( $_POST['hobby'] ) ) // il campo hobby è obbligatorio e non può essere vuoto
            $errors->add( 'hobby_error', __('<strong>ERROR</strong>: Devi inserire un hobby principale','registrazione-utenti') );
 
        return $errors;
 
    }
 
    // Salvataggio dei dati
    add_action('user_register', 'myplugin_user_register');
    function myplugin_user_register ($user_id) {
        if ( isset( $_POST['hobby'] ) )
            update_user_meta($user_id, 'hobby', $_POST['hobby']);
    }
 
 
/*
 * Visualizzazione dei dati aggiuntivi nel back end
 * 
 * */
 
 
 add_action('show_user_profile','show_the_new_meta_values'); // hook usato quando un utente sta visualizzando il proprio profilo
 add_action('edit_user_profile','show_the_new_meta_values'); // hook usato quando un utente sta visualizzando il profilo di un altro utente
 
 function show_the_new_meta_values($user)
 {
 
	$hobby= get_user_meta($user->ID,'hobby', true);
	?>
	<h3><?php _e('Informazioni aggiuntive','registrazione-utenti')?></h3>
		<table class="form-table">
			<tr>
				<th><label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?></label></th>
				<td><input type="text" name="hobby" id="hobby" value="<?php echo esc_attr($hobby); ?>" class="regular-text" /></td>
			</tr>
		</table>
	<?php
 }
 
 
 
 //aggiornamento dei dati
add_action('personal_options_update', 'update_the_new_meta_values');
add_action('edit_user_profile_update', 'update_the_new_meta_values');
 
function update_the_new_meta_values($user_id)
{
 
	$new_value = $_POST['hobby'];
 
	update_user_meta($user_id,'hobby',$new_value); // dati aggiornati
 
	if ( get_user_meta($user_id,  'hobby', true ) != $new_value ) // controlla che i dati siano stati salavati nel db
	wp_die(__( 'Errore nel Database','registrazione-utenti' ) );
}

Adesso ogni nuovo utente che vorrà registrarsi al vostro sito dovrà inserire necessariamente altre informazioni aggiuntive, inoltre dal back end potrete controllare e/o modificare i dati inseriti per ogni utente. Spero di essere stato chiaro, ma se avete dubbi non esitate a commentare!



Nessun commento

Lascia il tuo commento

I campi contrassegnati con asterisco sono obbligatori.

*