Php - Как добавить дополнительные поля в форму регистрации Wordpress - Stack Overflow на русском
12.04.2018
Не стоит вмешиваться в базу данных WordPress, пока вы не уверены на 100% в том, что вы делаете. Это может привести к непредсказуемым последствиям.
Кастомные данные пользователя нужно хранить метаданных пользователя, создавать, обновлять и удалять их посредством функций add_user_meta, update_user_meta, delete_user_meta.
Для большинства потребностей в расширении WP есть хуки. В частности, для данного случая тоже все предусмотрено. Код ниже нужно добавить в functions.php вашей темы.
//1. Добавляем новый элемент в форму add_action( 'register_form', 'myplugin_register_form' ); function myplugin_register_form() { $first_name = ( ! empty( $_POST['first_name'] ) ) ? trim( $_POST['first_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> <?php } //2. Добавляем проверку, если этот элемент обязателен 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' ) ); } 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'] ) ); } }Результат работы кода выглядит так.
Посмотреть работающую форму можно здесь .