- $user = $_POST['user'];
- if ( empty($user['username']) && empty($user['email']) )
- wp_die( __( 'Missing username and email.' ) );
- elseif ( empty($user['username']) )
- wp_die( __( 'Missing username.' ) );
- elseif ( empty($user['email']) )
- wp_die( __( 'Missing email.' ) );
-
- $password = wp_generate_password( 12, false);
- $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
-
- if ( false == $user_id )
- wp_die( __( 'Duplicated username or email address.' ) );
- else
- wp_new_user_notification( $user_id, $password );
-
- wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) );
- exit;
+
+ $user = wp_unslash( $_POST['user'] );
+
+ $user_details = wpmu_validate_user_signup( $user['username'], $user['email'] );
+ if ( is_wp_error( $user_details[ 'errors' ] ) && ! empty( $user_details[ 'errors' ]->errors ) ) {
+ $add_user_errors = $user_details[ 'errors' ];
+ } else {
+ $password = wp_generate_password( 12, false);
+ $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, sanitize_email( $user['email'] ) );
+
+ if ( ! $user_id ) {
+ $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) );
+ } else {
+ wp_new_user_notification( $user_id, 'both' );
+ wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) );
+ exit;
+ }
+ }