web-dev-qa-db-fra.com

Comment ajouter prénom et nom au formulaire d'inscription par défaut?

est-il possible d'ajouter le prénom et le nom de famille au formulaire d'inscription par défaut de wordpress?

3
Archangel17

Ajoutez ce code dans functions.php

add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {

    $first_name = ( ! empty( $_POST['first_name'] ) ) ? trim( $_POST['first_name'] ) : '';
    $last_name = ( ! empty( $_POST['last_name'] ) ) ? trim( $_POST['last_name'] ) : '';

        ?>
        <p>
            <label for="first_name"><?php _e( 'First Name', 'mydomain' ) ?><br />
                <input type="text" name="first_name" id="first_name" class="input" value="<?php echo esc_attr( wp_unslash( $first_name ) ); ?>" size="25" /></label>
        </p>

        <p>
            <label for="last_name"><?php _e( 'Last Name', 'mydomain' ) ?><br />
                <input type="text" name="last_name" id="last_name" class="input" value="<?php echo esc_attr( wp_unslash( $last_name ) ); ?>" size="25" /></label>
        </p>

        <?php
    }

    //2. Add validation. In this case, we make sure first_name is required.
    add_filter( 'registration_errors', 'myplugin_registration_errors', 10, 3 );
    function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {

        if ( empty( $_POST['first_name'] ) || ! empty( $_POST['first_name'] ) && trim( $_POST['first_name'] ) == '' ) {
            $errors->add( 'first_name_error', __( '<strong>ERROR</strong>: You must include a first name.', 'mydomain' ) );
        }
        if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['first_name'] ) == '' ) {
            $errors->add( 'last_name_error', __( '<strong>ERROR</strong>: You must include a first name.', 'mydomain' ) );
        }
        return $errors;
    }

    //3. Finally, save our extra registration user meta.
    add_action( 'user_register', 'myplugin_user_register' );
    function myplugin_user_register( $user_id ) {
        if ( ! empty( $_POST['first_name'] ) ) {
            update_user_meta( $user_id, 'first_name', trim( $_POST['first_name'] ) );
            update_user_meta( $user_id, 'last_name', trim( $_POST['last_name'] ) );
        }
    }

Pour plus d'informations, voir codex

Vous pouvez aussi utiliser des plugins

cimy-user-extra-fields

Formulaire d'inscription personnalisé

Aide à l'enregistrement des utilisateurs

2
Faysal Mahamud
$form['account']['lname'] = array('#type' => 'textfield',
'#title' => t('LastName'),
'#default_value' => $edit['LastName'],
'#maxlength' => LASTNAME_MAX_LENGTH,
'#description' => t('Spaces are allowed; punctuation is not allowed except for periods, hyphens, and underscores.'),
'#required' => TRUE,
);

vous pouvez le faire dans l'interface utilisateur uniquement

Naviguez jusqu'au sitedomain/admin/config/people/accounts/fields et ajoutez le prénom, le nom de famille aux champs où seront affichés Prénom et nom de famille, le formulaire d'inscription par défaut.

0
Ethan Root

Le code fonctionne, mais j'ai repéré un petit bug. Lors de la validation du nom de famille, la dernière variable de la condition if contient "prénom" et doit avoir "nom de famille". Donc, ce morceau de code, correctement, serait:

if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
     $errors->add( 'last_name_error', __( '<strong>ERROR</strong>: You must include a first name.', 'mydomain' ) );
}
0
Ignasi Calvo