- $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 {
+ /**
+ * Fires after a new user has been created via the network user-new.php page.
+ *
+ * @since 4.4.0
+ *
+ * @param int $user_id ID of the newly created user.
+ */
+ do_action( 'network_user_new_created_user', $user_id );
+ wp_redirect( add_query_arg( array('update' => 'added', 'user_id' => $user_id ), 'user-new.php' ) );
+ exit;
+ }
+ }