wp/wp-admin/users.php
changeset 21 48c4eec2b7e6
parent 19 3d72ae0968f4
child 22 8c2e4d02f4ef
--- a/wp/wp-admin/users.php	Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-admin/users.php	Fri Sep 05 18:40:08 2025 +0200
@@ -33,7 +33,7 @@
 		'id'      => 'overview',
 		'title'   => __( 'Overview' ),
 		'content' => '<p>' . __( 'This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.' ) . '</p>' .
-						'<p>' . __( 'To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section.' ) . '</p>',
+		'<p>' . __( 'To add a new user for your site, click the Add New User button at the top of the screen or Add New User in the Users menu section.' ) . '</p>',
 	)
 );
 
@@ -60,6 +60,12 @@
 	$help .= '<li>' . __( '<strong>Delete</strong> brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using bulk actions.' ) . '</li>';
 }
 
+$help .= '<li>' . __( '<strong>View</strong> takes you to a public author archive which lists all the posts published by the user.' ) . '</li>';
+
+if ( current_user_can( 'edit_users' ) ) {
+	$help .= '<li>' . __( '<strong>Send password reset</strong> sends the user an email with a link to set a new password.' ) . '</li>';
+}
+
 $help .= '</ul>';
 
 get_current_screen()->add_help_tab(
@@ -73,9 +79,9 @@
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
-	'<p>' . __( '<a href="https://wordpress.org/support/article/users-screen/">Documentation on Managing Users</a>' ) . '</p>' .
-	'<p>' . __( '<a href="https://wordpress.org/support/article/roles-and-capabilities/">Descriptions of Roles and Capabilities</a>' ) . '</p>' .
-	'<p>' . __( '<a href="https://wordpress.org/support/">Support</a>' ) . '</p>'
+	'<p>' . __( '<a href="https://wordpress.org/documentation/article/users-screen/">Documentation on Managing Users</a>' ) . '</p>' .
+	'<p>' . __( '<a href="https://wordpress.org/documentation/article/roles-and-capabilities/">Descriptions of Roles and Capabilities</a>' ) . '</p>' .
+	'<p>' . __( '<a href="https://wordpress.org/support/forums/">Support forums</a>' ) . '</p>'
 );
 
 get_current_screen()->set_screen_reader_content(
@@ -129,18 +135,19 @@
 			$role = '';
 		}
 
-		$userids = $_REQUEST['users'];
-		$update  = 'promote';
-		foreach ( $userids as $id ) {
-			$id = (int) $id;
+		$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
+		$update   = 'promote';
 
+		foreach ( $user_ids as $id ) {
 			if ( ! current_user_can( 'promote_user', $id ) ) {
 				wp_die( __( 'Sorry, you are not allowed to edit this user.' ), 403 );
 			}
 
 			// The new role of the current user must also have the promote_users cap or be a multisite super admin.
-			if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $role ]->has_cap( 'promote_users' )
-			&& ! ( is_multisite() && current_user_can( 'manage_network_users' ) ) ) {
+			if ( $id === $current_user->ID
+				&& ! $wp_roles->role_objects[ $role ]->has_cap( 'promote_users' )
+				&& ! ( is_multisite() && current_user_can( 'manage_network_users' ) )
+			) {
 					$update = 'err_admin_role';
 					continue;
 			}
@@ -173,10 +180,10 @@
 			exit;
 		}
 
-		$userids = array_map( 'intval', (array) $_REQUEST['users'] );
+		$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
 
 		if ( empty( $_REQUEST['delete_option'] ) ) {
-			$url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $userids ) . '&error=true' );
+			$url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $user_ids ) . '&error=true' );
 			$url = str_replace( '&amp;', '&', wp_nonce_url( $url, 'bulk-users' ) );
 			wp_redirect( $url );
 			exit;
@@ -189,15 +196,16 @@
 		$update       = 'del';
 		$delete_count = 0;
 
-		foreach ( $userids as $id ) {
+		foreach ( $user_ids as $id ) {
 			if ( ! current_user_can( 'delete_user', $id ) ) {
 				wp_die( __( 'Sorry, you are not allowed to delete that user.' ), 403 );
 			}
 
-			if ( $id == $current_user->ID ) {
+			if ( $id === $current_user->ID ) {
 				$update = 'err_admin_del';
 				continue;
 			}
+
 			switch ( $_REQUEST['delete_option'] ) {
 				case 'delete':
 					wp_delete_user( $id );
@@ -206,6 +214,7 @@
 					wp_delete_user( $id, $_REQUEST['reassign_user'] );
 					break;
 			}
+
 			++$delete_count;
 		}
 
@@ -221,18 +230,21 @@
 
 	case 'resetpassword':
 		check_admin_referer( 'bulk-users' );
+
 		if ( ! current_user_can( 'edit_users' ) ) {
 			$errors = new WP_Error( 'edit_users', __( 'Sorry, you are not allowed to edit users.' ) );
 		}
+
 		if ( empty( $_REQUEST['users'] ) ) {
 			wp_redirect( $redirect );
 			exit();
 		}
-		$userids = array_map( 'intval', (array) $_REQUEST['users'] );
+
+		$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
 
 		$reset_count = 0;
 
-		foreach ( $userids as $id ) {
+		foreach ( $user_ids as $id ) {
 			if ( ! current_user_can( 'edit_user', $id ) ) {
 				wp_die( __( 'Sorry, you are not allowed to edit this user.' ) );
 			}
@@ -244,7 +256,7 @@
 
 			// Send the password reset link.
 			$user = get_userdata( $id );
-			if ( retrieve_password( $user->user_login ) ) {
+			if ( true === retrieve_password( $user->user_login ) ) {
 				++$reset_count;
 			}
 		}
@@ -276,15 +288,15 @@
 		}
 
 		if ( empty( $_REQUEST['users'] ) ) {
-			$userids = array( (int) $_REQUEST['user'] );
+			$user_ids = array( (int) $_REQUEST['user'] );
 		} else {
-			$userids = array_map( 'intval', (array) $_REQUEST['users'] );
+			$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
 		}
 
-		$all_userids = $userids;
+		$all_user_ids = $user_ids;
 
-		if ( in_array( $current_user->ID, $userids, true ) ) {
-			$userids = array_diff( $userids, array( $current_user->ID ) );
+		if ( in_array( $current_user->ID, $user_ids, true ) ) {
+			$user_ids = array_diff( $user_ids, array( $current_user->ID ) );
 		}
 
 		/**
@@ -294,14 +306,22 @@
 		 * @since 5.2.0
 		 *
 		 * @param bool  $users_have_additional_content Whether the users have additional content. Default false.
-		 * @param int[] $userids                       Array of IDs for users being deleted.
+		 * @param int[] $user_ids                      Array of IDs for users being deleted.
 		 */
-		$users_have_content = (bool) apply_filters( 'users_have_additional_content', false, $userids );
+		$users_have_content = (bool) apply_filters( 'users_have_additional_content', false, $user_ids );
 
-		if ( $userids && ! $users_have_content ) {
-			if ( $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_author IN( " . implode( ',', $userids ) . ' ) LIMIT 1' ) ) {
+		if ( $user_ids && ! $users_have_content ) {
+			if ( $wpdb->get_var(
+				"SELECT ID FROM {$wpdb->posts}
+				WHERE post_author IN( " . implode( ',', $user_ids ) . ' )
+				LIMIT 1'
+			) ) {
 				$users_have_content = true;
-			} elseif ( $wpdb->get_var( "SELECT link_id FROM {$wpdb->links} WHERE link_owner IN( " . implode( ',', $userids ) . ' ) LIMIT 1' ) ) {
+			} elseif ( $wpdb->get_var(
+				"SELECT link_id FROM {$wpdb->links}
+				WHERE link_owner IN( " . implode( ',', $user_ids ) . ' )
+				LIMIT 1'
+			) ) {
 				$users_have_content = true;
 			}
 		}
@@ -312,88 +332,124 @@
 
 		require_once ABSPATH . 'wp-admin/admin-header.php';
 		?>
-	<form method="post" name="updateusers" id="updateusers">
+		<form method="post" name="updateusers" id="updateusers">
 		<?php wp_nonce_field( 'delete-users' ); ?>
 		<?php echo $referer; ?>
 
-<div class="wrap">
-<h1><?php _e( 'Delete Users' ); ?></h1>
-		<?php if ( isset( $_REQUEST['error'] ) ) : ?>
-	<div class="error">
-		<p><strong><?php _e( 'Error:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
-	</div>
+		<div class="wrap">
+		<h1><?php _e( 'Delete Users' ); ?></h1>
+
+		<?php
+		if ( isset( $_REQUEST['error'] ) ) :
+			wp_admin_notice(
+				'<strong>' . __( 'Error:' ) . '</strong> ' . __( 'Please select an option.' ),
+				array(
+					'additional_classes' => array( 'error' ),
+				)
+			);
+		endif;
+		?>
+
+		<?php if ( 1 === count( $all_user_ids ) ) : ?>
+			<p><?php _e( 'You have specified this user for deletion:' ); ?></p>
+		<?php else : ?>
+			<p><?php _e( 'You have specified these users for deletion:' ); ?></p>
 		<?php endif; ?>
 
-		<?php if ( 1 === count( $all_userids ) ) : ?>
-	<p><?php _e( 'You have specified this user for deletion:' ); ?></p>
-		<?php else : ?>
-	<p><?php _e( 'You have specified these users for deletion:' ); ?></p>
-		<?php endif; ?>
-
-<ul>
+		<ul>
 		<?php
 		$go_delete = 0;
-		foreach ( $all_userids as $id ) {
+
+		foreach ( $all_user_ids as $id ) {
 			$user = get_userdata( $id );
-			if ( $id == $current_user->ID ) {
-				/* translators: 1: User ID, 2: User login. */
-				echo '<li>' . sprintf( __( 'ID #%1$s: %2$s <strong>The current user will not be deleted.</strong>' ), $id, $user->user_login ) . "</li>\n";
+
+			if ( $id === $current_user->ID ) {
+				echo '<li>';
+				printf(
+					/* translators: 1: User ID, 2: User login. */
+					__( 'ID #%1$s: %2$s <strong>The current user will not be deleted.</strong>' ),
+					$id,
+					$user->user_login
+				);
+				echo "</li>\n";
 			} else {
-				/* translators: 1: User ID, 2: User login. */
-				echo '<li><input type="hidden" name="users[]" value="' . esc_attr( $id ) . '" />' . sprintf( __( 'ID #%1$s: %2$s' ), $id, $user->user_login ) . "</li>\n";
-				$go_delete++;
+				echo '<li>';
+				printf(
+					'<input type="hidden" name="users[]" value="%s" />',
+					esc_attr( $id )
+				);
+				printf(
+					/* translators: 1: User ID, 2: User login. */
+					__( 'ID #%1$s: %2$s' ),
+					$id,
+					$user->user_login
+				);
+				echo "</li>\n";
+
+				++$go_delete;
 			}
 		}
 		?>
-	</ul>
+		</ul>
+
 		<?php
 		if ( $go_delete ) :
 
 			if ( ! $users_have_content ) :
 				?>
-			<input type="hidden" name="delete_option" value="delete" />
+				<input type="hidden" name="delete_option" value="delete" />
 			<?php else : ?>
-				<?php if ( 1 == $go_delete ) : ?>
-			<fieldset><p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
-		<?php else : ?>
-			<fieldset><p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
-		<?php endif; ?>
-		<ul style="list-style:none;">
-			<li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
-				<?php _e( 'Delete all content.' ); ?></label></li>
-			<li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
+				<fieldset>
+				<?php if ( 1 === $go_delete ) : ?>
+					<p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
+				<?php else : ?>
+					<p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
+				<?php endif; ?>
+
+				<ul style="list-style:none;">
+					<li>
+						<input type="radio" id="delete_option0" name="delete_option" value="delete" />
+						<label for="delete_option0"><?php _e( 'Delete all content.' ); ?></label>
+					</li>
+					<li>
+						<input type="radio" id="delete_option1" name="delete_option" value="reassign" />
+						<label for="delete_option1"><?php _e( 'Attribute all content to:' ); ?></label>
+						<?php
+						wp_dropdown_users(
+							array(
+								'name'    => 'reassign_user',
+								'exclude' => $user_ids,
+								'show'    => 'display_name_with_login',
+							)
+						);
+						?>
+					</li>
+				</ul>
+				</fieldset>
 				<?php
-				echo '<label for="delete_option1">' . __( 'Attribute all content to:' ) . '</label> ';
-				wp_dropdown_users(
-					array(
-						'name'    => 'reassign_user',
-						'exclude' => $userids,
-						'show'    => 'display_name_with_login',
-					)
-				);
-				?>
-			</li>
-		</ul></fieldset>
-				<?php
-	endif;
+			endif;
+
 			/**
 			 * Fires at the end of the delete users form prior to the confirm button.
 			 *
 			 * @since 4.0.0
-			 * @since 4.5.0 The `$userids` parameter was added.
+			 * @since 4.5.0 The `$user_ids` parameter was added.
 			 *
 			 * @param WP_User $current_user WP_User object for the current user.
-			 * @param int[]   $userids      Array of IDs for users being deleted.
+			 * @param int[]   $user_ids     Array of IDs for users being deleted.
 			 */
-			do_action( 'delete_user_form', $current_user, $userids );
+			do_action( 'delete_user_form', $current_user, $user_ids );
 			?>
-	<input type="hidden" name="action" value="dodelete" />
+			<input type="hidden" name="action" value="dodelete" />
 			<?php submit_button( __( 'Confirm Deletion' ), 'primary' ); ?>
-	<?php else : ?>
-	<p><?php _e( 'There are no valid users selected for deletion.' ); ?></p>
-	<?php endif; ?>
-	</div>
-	</form>
+
+		<?php else : ?>
+
+			<p><?php _e( 'There are no valid users selected for deletion.' ); ?></p>
+
+		<?php endif; ?>
+		</div><!-- .wrap -->
+		</form><!-- #updateusers -->
 		<?php
 
 		break;
@@ -414,15 +470,15 @@
 			wp_die( __( 'Sorry, you are not allowed to remove users.' ), 403 );
 		}
 
-		$userids = $_REQUEST['users'];
+		$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
+		$update   = 'remove';
 
-		$update = 'remove';
-		foreach ( $userids as $id ) {
-			$id = (int) $id;
+		foreach ( $user_ids as $id ) {
 			if ( ! current_user_can( 'remove_user', $id ) ) {
 				$update = 'err_admin_remove';
 				continue;
 			}
+
 			remove_user_from_blog( $id, $blog_id );
 		}
 
@@ -447,51 +503,74 @@
 		}
 
 		if ( empty( $_REQUEST['users'] ) ) {
-			$userids = array( (int) $_REQUEST['user'] );
+			$user_ids = array( (int) $_REQUEST['user'] );
 		} else {
-			$userids = $_REQUEST['users'];
+			$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
 		}
 
 		require_once ABSPATH . 'wp-admin/admin-header.php';
 		?>
-	<form method="post" name="updateusers" id="updateusers">
+		<form method="post" name="updateusers" id="updateusers">
 		<?php wp_nonce_field( 'remove-users' ); ?>
 		<?php echo $referer; ?>
 
-<div class="wrap">
-<h1><?php _e( 'Remove Users from Site' ); ?></h1>
+		<div class="wrap">
+		<h1><?php _e( 'Remove Users from Site' ); ?></h1>
 
-		<?php if ( 1 === count( $userids ) ) : ?>
-	<p><?php _e( 'You have specified this user for removal:' ); ?></p>
+		<?php if ( 1 === count( $user_ids ) ) : ?>
+			<p><?php _e( 'You have specified this user for removal:' ); ?></p>
 		<?php else : ?>
-	<p><?php _e( 'You have specified these users for removal:' ); ?></p>
+			<p><?php _e( 'You have specified these users for removal:' ); ?></p>
 		<?php endif; ?>
 
-<ul>
+		<ul>
 		<?php
 		$go_remove = false;
-		foreach ( $userids as $id ) {
-			$id   = (int) $id;
+
+		foreach ( $user_ids as $id ) {
 			$user = get_userdata( $id );
+
 			if ( ! current_user_can( 'remove_user', $id ) ) {
-				/* translators: 1: User ID, 2: User login. */
-				echo '<li>' . sprintf( __( 'ID #%1$s: %2$s <strong>Sorry, you are not allowed to remove this user.</strong>' ), $id, $user->user_login ) . "</li>\n";
+				echo '<li>';
+				printf(
+					/* translators: 1: User ID, 2: User login. */
+					__( 'ID #%1$s: %2$s <strong>Sorry, you are not allowed to remove this user.</strong>' ),
+					$id,
+					$user->user_login
+				);
+				echo "</li>\n";
 			} else {
-				/* translators: 1: User ID, 2: User login. */
-				echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf( __( 'ID #%1$s: %2$s' ), $id, $user->user_login ) . "</li>\n";
+				echo '<li>';
+				printf(
+					'<input type="hidden" name="users[]" value="%s" />',
+					esc_attr( $id )
+				);
+				printf(
+					/* translators: 1: User ID, 2: User login. */
+					__( 'ID #%1$s: %2$s' ),
+					$id,
+					$user->user_login
+				);
+				echo "</li>\n";
+
 				$go_remove = true;
 			}
 		}
 		?>
-	</ul>
+		</ul>
+
 		<?php if ( $go_remove ) : ?>
-		<input type="hidden" name="action" value="doremove" />
+
+			<input type="hidden" name="action" value="doremove" />
 			<?php submit_button( __( 'Confirm Removal' ), 'primary' ); ?>
-	<?php else : ?>
-	<p><?php _e( 'There are no valid users selected for removal.' ); ?></p>
-	<?php endif; ?>
-	</div>
-	</form>
+
+		<?php else : ?>
+
+			<p><?php _e( 'There are no valid users selected for removal.' ); ?></p>
+
+		<?php endif; ?>
+		</div><!-- .wrap -->
+		</form><!-- #updateusers -->
 		<?php
 
 		break;
@@ -505,10 +584,10 @@
 		if ( $wp_list_table->current_action() && ! empty( $_REQUEST['users'] ) ) {
 			$screen   = get_current_screen()->id;
 			$sendback = wp_get_referer();
-			$userids  = $_REQUEST['users'];
+			$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
 
 			/** This action is documented in wp-admin/edit.php */
-			$sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $wp_list_table->current_action(), $userids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
+			$sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $wp_list_table->current_action(), $user_ids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
 
 			wp_safe_redirect( $sendback );
 			exit;
@@ -516,6 +595,7 @@
 
 		$wp_list_table->prepare_items();
 		$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
+
 		if ( $pagenum > $total_pages && $total_pages > 0 ) {
 			wp_redirect( add_query_arg( 'paged', $total_pages ) );
 			exit;
@@ -529,21 +609,28 @@
 				case 'del':
 				case 'del_many':
 					$delete_count = isset( $_GET['delete_count'] ) ? (int) $_GET['delete_count'] : 0;
-					if ( 1 == $delete_count ) {
+					if ( 1 === $delete_count ) {
 						$message = __( 'User deleted.' );
 					} else {
 						/* translators: %s: Number of users. */
 						$message = _n( '%s user deleted.', '%s users deleted.', $delete_count );
 					}
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( $message, number_format_i18n( $delete_count ) ) . '</p></div>';
+					$message    = sprintf( $message, number_format_i18n( $delete_count ) );
+					$messages[] = wp_get_admin_notice(
+						$message,
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'add':
 					$message = __( 'New user created.' );
-
 					$user_id = isset( $_GET['id'] ) ? $_GET['id'] : false;
 					if ( $user_id && current_user_can( 'edit_user', $user_id ) ) {
 						$message .= sprintf(
-							' <a href="%s">%s</a>',
+							' <a href="%1$s">%2$s</a>',
 							esc_url(
 								add_query_arg(
 									'wp_http_referer',
@@ -555,7 +642,14 @@
 						);
 					}
 
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . $message . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						$message,
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'resetpassword':
 					$reset_count = isset( $_GET['reset_count'] ) ? (int) $_GET['reset_count'] : 0;
@@ -565,42 +659,107 @@
 						/* translators: %s: Number of users. */
 						$message = _n( 'Password reset links sent to %s user.', 'Password reset links sent to %s users.', $reset_count );
 					}
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( $message, number_format_i18n( $reset_count ) ) . '</p></div>';
+					$message    = sprintf( $message, number_format_i18n( $reset_count ) );
+					$messages[] = wp_get_admin_notice(
+						$message,
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'promote':
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Changed roles.' ) . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						__( 'Changed roles.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'err_admin_role':
-					$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __( 'The current user&#8217;s role must have user editing capabilities.' ) . '</p></div>';
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Other user roles have been changed.' ) . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						__( 'The current user&#8217;s role must have user editing capabilities.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'error' ),
+							'dismissible'        => true,
+						)
+					);
+					$messages[] = wp_get_admin_notice(
+						__( 'Other user roles have been changed.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'err_admin_del':
-					$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __( 'You cannot delete the current user.' ) . '</p></div>';
-					$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Other users have been deleted.' ) . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						__( 'You cannot delete the current user.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'error' ),
+							'dismissible'        => true,
+						)
+					);
+					$messages[] = wp_get_admin_notice(
+						__( 'Other users have been deleted.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'remove':
-					$messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __( 'User removed from this site.' ) . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						__( 'User removed from this site.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated', 'fade' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 				case 'err_admin_remove':
-					$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __( 'You cannot remove the current user.' ) . '</p></div>';
-					$messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __( 'Other users have been removed.' ) . '</p></div>';
+					$messages[] = wp_get_admin_notice(
+						__( 'You cannot remove the current user.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'error' ),
+							'dismissible'        => true,
+						)
+					);
+					$messages[] = wp_get_admin_notice(
+						__( 'Other users have been removed.' ),
+						array(
+							'id'                 => 'message',
+							'additional_classes' => array( 'updated', 'fade' ),
+							'dismissible'        => true,
+						)
+					);
 					break;
 			}
 		endif;
 		?>
 
-		<?php if ( isset( $errors ) && is_wp_error( $errors ) ) : ?>
-		<div class="error">
-			<ul>
-			<?php
+		<?php
+		if ( isset( $errors ) && is_wp_error( $errors ) ) :
+			$error_message = '';
 			foreach ( $errors->get_error_messages() as $err ) {
-				echo "<li>$err</li>\n";
+				$error_message .= "<li>$err</li>\n";
 			}
-			?>
-			</ul>
-		</div>
-			<?php
-	endif;
+			wp_admin_notice(
+				'<ul>' . $error_message . '</ul>',
+				array(
+					'additional_classes' => array( 'error' ),
+				)
+			);
+		endif;
 
 		if ( ! empty( $messages ) ) {
 			foreach ( $messages as $msg ) {
@@ -609,50 +768,55 @@
 		}
 		?>
 
-	<div class="wrap">
-	<h1 class="wp-heading-inline">
-		<?php
-		echo esc_html( $title );
-		?>
-</h1>
+		<div class="wrap">
+		<h1 class="wp-heading-inline">
+			<?php echo esc_html( $title ); ?>
+		</h1>
 
 		<?php
 		if ( current_user_can( 'create_users' ) ) {
-			?>
-	<a href="<?php echo esc_url( admin_url( 'user-new.php' ) ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
-<?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
-	<a href="<?php echo esc_url( admin_url( 'user-new.php' ) ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
-			<?php
-}
+			printf(
+				'<a href="%1$s" class="page-title-action">%2$s</a>',
+				esc_url( admin_url( 'user-new.php' ) ),
+				esc_html__( 'Add New User' )
+			);
+		} elseif ( is_multisite() && current_user_can( 'promote_users' ) ) {
+			printf(
+				'<a href="%1$s" class="page-title-action">%2$s</a>',
+				esc_url( admin_url( 'user-new.php' ) ),
+				esc_html__( 'Add Existing User' )
+			);
+		}
 
-if ( strlen( $usersearch ) ) {
-	echo '<span class="subtitle">';
-	printf(
-		/* translators: %s: Search query. */
-		__( 'Search results for: %s' ),
-		'<strong>' . esc_html( $usersearch ) . '</strong>'
-	);
-	echo '</span>';
-}
-?>
+		if ( strlen( $usersearch ) ) {
+			echo '<span class="subtitle">';
+			printf(
+				/* translators: %s: Search query. */
+				__( 'Search results for: %s' ),
+				'<strong>' . esc_html( $usersearch ) . '</strong>'
+			);
+			echo '</span>';
+		}
+		?>
 
-<hr class="wp-header-end">
+		<hr class="wp-header-end">
 
 		<?php $wp_list_table->views(); ?>
 
-<form method="get">
+		<form method="get">
 
 		<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
 
 		<?php if ( ! empty( $_REQUEST['role'] ) ) { ?>
-<input type="hidden" name="role" value="<?php echo esc_attr( $_REQUEST['role'] ); ?>" />
-<?php } ?>
+			<input type="hidden" name="role" value="<?php echo esc_attr( $_REQUEST['role'] ); ?>" />
+		<?php } ?>
 
 		<?php $wp_list_table->display(); ?>
-</form>
+
+		</form>
 
-<div class="clear"></div>
-</div>
+		<div class="clear"></div>
+		</div><!-- .wrap -->
 		<?php
 		break;