Как добавить имя и фамилию в стандартную форму регистрации?
26 мар. 2017 г., 14:35:42
Просмотры: 23.3K
Голосов: 5
Возможно ли добавить поля имени и фамилии в стандартную форму регистрации WordPress?

Archangel17
489
Все ответы на вопрос
3
0
Добавьте этот код в 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( 'Имя', '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( 'Фамилия', '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. Добавляем валидацию. В данном случае мы проверяем, что first_name и last_name обязательны.
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>ОШИБКА</strong>: Необходимо указать имя.', 'mydomain' ) );
}
if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
$errors->add( 'last_name_error', __( '<strong>ОШИБКА</strong>: Необходимо указать фамилию.', 'mydomain' ) );
}
return $errors;
}
//3. В конце сохраняем дополнительные метаданные пользователя при регистрации.
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'] ) );
}
}
Для получения дополнительной информации смотрите кодекс
Вы также можете использовать некоторые плагины

Faysal Mahamud
1.04K
26 мар. 2017 г. 15:14:05
0
Код работает, но я обнаружил небольшую ошибку. При валидации last_name, последняя переменная в условии if содержит "first_name", а должна содержать "last_name". Таким образом, правильный вариант этого фрагмента кода будет:
if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
$errors->add( 'last_name_error', __( '<strong>ОШИБКА</strong>: Вы должны указать фамилию.', 'mydomain' ) );
}

Ignasi Calvo
1
25 янв. 2018 г. 19:55:45
0
$form['account']['lname'] = array('#type' => 'textfield',
'#title' => t('Фамилия'),
'#default_value' => $edit['LastName'],
'#maxlength' => LASTNAME_MAX_LENGTH,
'#description' => t('Допускаются пробелы; знаки препинания не разрешены, за исключением точек, дефисов и подчеркиваний.'),
'#required' => TRUE,
);
Это можно сделать только через интерфейс
Перейдите по адресу sitedomain/admin/config/people/accounts/fields
и добавьте поля "Имя" и "Фамилия" - они будут отображаться в стандартной форме регистрации

Ethan Root
1
15 июн. 2018 г. 16:25:49
Похожие вопросы