I've created a custom registration form for my website with this code:

    Template Name: Registrazione-Custom
    get_header(); ?>

<!-- Row for main content area -->

            <div id="content" class="left eight columns" role="main">

            <div class="post-box">

                            <?php get_template_part('/includes/content', 'page'); ?>     

                <div class="wrapper">   


        $err = '';

        $success = '';

        global $wpdb, $PasswordHash, $current_user, $user_ID;

        if(isset($_POST['task']) && $_POST['task'] == 'register' ) {

            $pwd1 = $wpdb->escape(trim($_POST['pwd1']));

            $pwd2 = $wpdb->escape(trim($_POST['pwd2']));

            $first_name = $wpdb->escape(trim($_POST['first_name']));

            $last_name = $wpdb->escape(trim($_POST['last_name']));

            $email = $wpdb->escape(trim($_POST['email']));

            $username = $wpdb->escape(trim($_POST['username']));

            if( $email == "" || $pwd1 == "" || $pwd2 == "" || $username == "" || $first_name == "" || $last_name == "") {

                $err = 'Devi compilare tutti i campi obbligatori';

            } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {

                $err = 'Indirizzo email non valido.';

            } else if(email_exists($email) ) {

                $err = 'Indirizzo email gi&agrave registrato.';

            } else if($pwd1 <> $pwd2 ){

                $err = 'Le password non corrispondono.';        

            } else {

                $user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );

                if( is_wp_error($user_id) ) {

                    $err = 'Errore in fase di registrazione, nome utente gi&agrave registrato';

                } else {

                    do_action('user_register', $user_id);

                $success = 'You\'re successfully register';

                echo '<script language="javascript">

                  top.location.href = "http://www.miosito.it/";


                // e inviamo una mail con la riuscita registazione

    mail ($email, "Registrazione Mio Sito", "Complimenti registrazione effettuata con successo. Ti ricordiamo i tuoi dati per l'accesso al sito username: $username, e password: $pwd1", "From: [email protected]");

                           // e inviamo una mail ad admin di registrazione nuovo utente

    mail ("[email protected]", "Registrazione Nuovo Utente Area Riservata", "Il nuovo utente $first_name $last_name con nome utente $username si è appena registrato all'area registrata del sito Alpe Adria Insurance Brokers", "From: [email protected]");

                     wp_set_current_user( $user_ID, $current_user );


                     $redirect_to = site_url('www.google.it');







            <!--display error/success message-->

        <div id="message">


                if(! empty($err) ) :

                    echo '<p class="error">'.$err.'</p>';




                if(! empty($success) ) :

                    echo '<p class="error">'.$success.'</p>';




        <form method="post">

            <h3>Registrati al Portale Mio Sito</h3>

            <div class="customregistrazione">

            <label class="customregistrazione">Cognome*</label>

            <input type="text" value="" name="last_name" id="last_name" style="width: 50%;" />

            <label >Nome*</label>

            <input type="text" value="" name="first_name" id="first_name" style="width: 50%;" />


            <input type="text" value="" name="email" id="email" style="width: 50%;" />


            <input type="text" value="" name="username" id="username" style="width: 50%;" />


            <input type="password" value="" name="pwd1" id="pwd1" style="width: 50%;" />

            <label>Reinserisci Password*</label>

            <input type="password" value="" name="pwd2" id="pwd2" style="width: 50%;" />


            <div class="alignleft"><p><?php if($sucess != "") { echo $sucess; } ?> <?php if($err != "") { echo $err; } ?></p></div>

            <div>Compilando il seguente form di registrazione il cliente accetta quanto previsto nel <a href="http://www.miosito.it/disclaimer-privacy/">disclaimer</a></div>

            <button type="submit" name="btnregister" class="button" >Registrati</button>

            <input type="hidden" name="task" value="register" />




            </div><!-- End Content row -->

            <?php get_sidebar( 'right' ); ?>

    <?php get_footer(); ?>

I want to add some custom fields on my custom registration form. If I need to add the custom field on the default registration form, I know that I must use this code in functions.php:

 //Aggiunta del nuovo elemento al form di registrazione

    function myplugin_register_form (){
        $hobby = ( isset( $_POST['hobby'] ) ) ? $_POST['hobby']: ''; //salvataggio del campo hobby
            <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>

    // 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">
                <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>

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

But, how do I add the custom field on my custom registration form?


1 Answer 1


You may try a very different approach which I just used recently. Try out the WordPress plugin Pie Register for that, it gives you an easy drag-and-drop interface for customising your registration form, adding custom fields of all sorts and the e-mails being sent and who is being activated. Hope this is what you need!

  • You can even use the custom fields created by the plugin anywhere in your template, though it is a bit tricky (you would best need PHPMyAdmin access to get the custom fields' names in order to use them).
    – physalis
    Commented Aug 26, 2014 at 9:03
  • 1
    Hello, and thank'e every one but i don't like to use a plugin. So how can i do?
    – skifast
    Commented Aug 27, 2014 at 6:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.