Зарегистрировать форму, как получить полный контроль над ней

Спасибо за прочтение.

Я хотел бы полностью контролировать, как регистрация выполняется на моем новом сайте.

Я хочу, чтобы новый пользователь написал свой собственный пароль и заполнил разные поля. Отображать мои собственные ошибки и сообщения и т. Д.

Можете ли вы указать мне в правильном направлении? Все, что я нахожу, это плагины, которые используют короткие коды, которые даже не достаточно близки к тому, чего я пытаюсь достичь.

Solutions Collecting From Web of "Зарегистрировать форму, как получить полный контроль над ней"

Скопируйте эту функцию и измените ее в соответствии с вашими потребностями.

function custom_register_new_user( $user_login, $user_email ) { $errors = new WP_Error(); $sanitized_user_login = sanitize_user( $user_login ); $user_email = apply_filters( 'user_registration_email', $user_email ); // Check the username if ( $sanitized_user_login == '' ) { $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.' ) ); } elseif ( ! validate_username( $user_login ) ) { $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); $sanitized_user_login = ''; } elseif ( username_exists( $sanitized_user_login ) ) { $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ) ); } // Check the e-mail address if ( $user_email == '' ) { $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) ); } elseif ( ! is_email( $user_email ) ) { $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn&#8217;t correct.' ) ); $user_email = ''; } elseif ( email_exists( $user_email ) ) { $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) ); } do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email ); if ( $errors->get_error_code() ) return $errors; $user_pass = wp_generate_password( 12, false); $user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email ); if ( ! $user_id ) { $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) ); return $errors; } update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag. wp_new_user_notification( $user_id, $user_pass ); return $user_id; } 

Прочтите эту страницу, чтобы отобразить собственные сообщения об ошибках.

Связанные вопросы:

Форма регистра конечного пользователя

Как отобразить форму регистрации пользователя WordPress в конце веб-сайта?

Использование функции Гири и информации по этой ссылке http://codex.wordpress.org/Customizing_the_Registration_Form

Мне удалось создать следующую функцию для создания пользовательской регистрации для моего сайта WordPress. Пользователь выбирает свой пароль, а также указывает имя и последние имена. Имя пользователя равно электронной почте, так как я не хочу имени пользователя.

В отдельном файле (где находится форма регистра) проверьте, была ли форма отправлена ​​и вызывается эта функция со всеми необходимыми параметрами. Затем обрабатывайте ошибки и удачные сообщения.

Внутри файла functions.php я добавил следующее:

 function custom_register_new_user( $user_login, $user_email, $user_apellidos, $user_nombre, $user_password, $user_repassword ) { $errors = new WP_Error(); $sanitized_user_login = sanitize_user( $user_login ); $user_email = apply_filters( 'user_registration_email', $user_email ); $user_nombre = escape($user_nombre); $user_password = escape($user_password); $user_repassword = escape($user_repassword); // Check the username if ( $sanitized_user_login == '' ) { $errors->add( 'empty_username', __( 'Por favor escrib&iacute; un <strong>E-mail</strong>' ) ); } elseif ( ! validate_username( $user_login ) ) { $errors->add( 'invalid_username', __( 'El <strong>e-mail</strong> es incorrecto' ) ); $sanitized_user_login = ''; } elseif ( username_exists( $sanitized_user_login ) ) { $errors->add( 'username_exists', __( 'Este <strong>e-mail</strong> ya est&aacute; registrado, eleg&iacute; otro' ) ); } // Check the e-mail address if ( $user_email == '' ) { $errors->add( 'empty_email', 'Por favor escrib&iacute; un <strong>E-mail</strong>' ); } elseif ( ! is_email( $user_email ) ) { $errors->add( 'invalid_email', 'El <strong>e-mail</strong> es incorrecto' ); $user_email = ''; } elseif ( email_exists( $user_email ) ) { $errors->add( 'email_exists', 'Este <strong>e-mail</strong> ya est&aacute; registrado, eleg&iacute; otro' ); } // Check the apellidos if ( $user_apellidos == '') { $errors->add( 'apellidos_error', 'Por favor escrib&iacute; tus <strong>Apellidos</strong>' ); } // Check the nombre if ( $user_nombre == '') { $errors->add( 'nombre_error', 'Por favor escrib&iacute; tu <strong>Nombre</strong>' ); } // Check the password if( $user_password == '' ) { $errors->add ( 'password_error', 'Por favor escrib&iacute; una <strong>Contrase&ntilde;a</strong>' ); } elseif( !(ctype_alnum($user_password)) ) { $errors->add ( 'password_error', '<strong>Contrase&ntilde;a</strong> no valida. Us&aacute; solo letras y n&uacute;meros' ); } elseif( $user_repassword == '' || $user_password != $user_password ) { $errors->add ( 'password_error', 'Las <strong>Constrase&ntilde;as</strong> no coinciden</strong>' ); } do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email, $user_nombre, $user_apellidos, $user_password ); if ( $errors->get_error_code() ) return $errors; $user_pass = $user_password; $user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email ); if ( ! $user_id ) { $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) ); return $errors; } update_user_meta($user_id, 'first_name', $user_nombre ); update_user_meta($user_id, 'last_name', $user_apellidos ); /* wp_new_user_notification( $user_id, $user_pass ); */ return $user_id; } 

Чтобы обрабатывать ошибки, проверьте, возвращается ли функция is_wp_error. Else продолжают приветственное сообщение или что-то еще.

 $return = custom_register_new_user($_POST['email'], $_POST['email'], $_POST['apellidos'], $_POST['nombre'], $_POST['password'], $_POST['repassword']); if( is_wp_error($return) ) { $errores = $return->errors; if( count($errores) > 0 ) { if( $errores['apellidos_error'] ) $error_apellidos = $errores['apellidos_error'][0]; if( $errores['nombre_error'] ) $error_nombre = $errores['nombre_error'][0]; .... etc .... 

Кроме того, добавлена ​​переадресация «Header» в регистрационную форму deafult, поэтому пользователи всегда приземляются на мою собственную форму. То же самое для входа и забытого пароля