Cum să adaugi prenumele și numele la formularul implicit de înregistrare?

26 mar. 2017, 14:35:42
Vizualizări: 23.3K
Voturi: 5

Este posibil să adaugi prenumele și numele în formularul implicit de înregistrare WordPress?

0
Toate răspunsurile la întrebare 3
0

Adaugă acest cod în 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( 'Prenume', '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( 'Nume', '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. Adaugă validare. În acest caz, ne asigurăm că prenumele și numele sunt obligatorii.
    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>EROARE</strong>: Trebuie să incluzi un prenume.', 'mydomain' ) );
        }
        if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
            $errors->add( 'last_name_error', __( '<strong>EROARE</strong>: Trebuie să incluzi un nume.', 'mydomain' ) );
        }
        return $errors;
    }

    //3. În final, salvăm metadatele suplimentare ale utilizatorului la înregistrare.
    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'] ) );
        }
    }

Pentru mai multe informații vezi codex

Poți folosi și unele pluginuri

cimy-user-extra-fields

Formular de înregistrare personalizat

User Registration Aide

26 mar. 2017 15:14:05
0

Codul funcționează, dar am identificat o mică eroare. La validarea numelui de familie (last_name), ultima variabilă din condiția if are "first_name", dar ar trebui să aibă "last_name". Așadar, acel fragment de cod, corectat, ar arăta astfel:

if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
     $errors->add( 'last_name_error', __( '<strong>EROARE</strong>: Trebuie să incluzi un nume de familie.', 'mydomain' ) );
}
25 ian. 2018 19:55:45
0
$form['account']['lname'] = array('#type' => 'textfield',
'#title' => t('Nume de familie'),
'#default_value' => $edit['LastName'],
'#maxlength' => LASTNAME_MAX_LENGTH,
'#description' => t('Spațiile sunt permise; semnele de punctuație nu sunt permise, cu excepția punctelor, cratimelor și underscore-urilor.'),
'#required' => TRUE,
);

poți face acest lucru doar prin interfața utilizator

Navighează la sitedomain/admin/config/people/accounts/fields și adaugă câmpurile pentru prenume și nume de familie, acestea vor fi afișate în formularul implicit de înregistrare

15 iun. 2018 16:25:49