if ( ! current_user_can( 'remove_users' ) ) {
$error = new WP_Error( 'edit_users', __( 'Sorry, you are not allowed to remove users.' ) );
if ( empty( $_REQUEST['users'] ) ) {
$user_ids = array( (int) $_REQUEST['user'] );
$user_ids = array_map( 'intval', (array) $_REQUEST['users'] );
require_once ABSPATH . 'wp-admin/admin-header.php';
<form method="post" name="updateusers" id="updateusers">
<?php wp_nonce_field( 'remove-users' ); ?>
<h1><?php _e( 'Remove Users from Site' ); ?></h1>
<?php if ( 1 === count( $user_ids ) ) : ?>
<p><?php _e( 'You have specified this user for removal:' ); ?></p>
<p><?php _e( 'You have specified these users for removal:' ); ?></p>
foreach ( $user_ids as $id ) {
$user = get_userdata( $id );
if ( ! current_user_can( 'remove_user', $id ) ) {
/* translators: 1: User ID, 2: User login. */
__( 'ID #%1$s: %2$s <strong>Sorry, you are not allowed to remove this user.</strong>' ),
'<input type="hidden" name="users[]" value="%s" />',
/* translators: 1: User ID, 2: User login. */
<?php if ( $go_remove ) : ?>
<input type="hidden" name="action" value="doremove" />
<?php submit_button( __( 'Confirm Removal' ), 'primary' ); ?>
<p><?php _e( 'There are no valid users selected for removal.' ); ?></p>
</form><!-- #updateusers -->
if ( ! empty( $_GET['_wp_http_referer'] ) ) {
wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
if ( $wp_list_table->current_action() && ! empty( $_REQUEST['users'] ) ) {
$screen = get_current_screen()->id;
$sendback = wp_get_referer();
$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(), $user_ids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
wp_safe_redirect( $sendback );
$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 ) );
require_once ABSPATH . 'wp-admin/admin-header.php';
if ( isset( $_GET['update'] ) ) :
switch ( $_GET['update'] ) {
$delete_count = isset( $_GET['delete_count'] ) ? (int) $_GET['delete_count'] : 0;
if ( 1 === $delete_count ) {
$message = __( 'User deleted.' );
/* translators: %s: Number of users. */
$message = _n( '%s user deleted.', '%s users deleted.', $delete_count );
$message = sprintf( $message, number_format_i18n( $delete_count ) );
$messages[] = wp_get_admin_notice(
'additional_classes' => array( 'updated' ),
$message = __( 'New user created.' );
$user_id = isset( $_GET['id'] ) ? $_GET['id'] : false;
if ( $user_id && current_user_can( 'edit_user', $user_id ) ) {
' <a href="%1$s">%2$s</a>',
urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
self_admin_url( 'user-edit.php?user_id=' . $user_id )
$messages[] = wp_get_admin_notice(
'additional_classes' => array( 'updated' ),
$reset_count = isset( $_GET['reset_count'] ) ? (int) $_GET['reset_count'] : 0;
if ( 1 === $reset_count ) {
$message = __( 'Password reset link sent.' );
/* translators: %s: Number of users. */
$message = _n( 'Password reset links sent to %s user.', 'Password reset links sent to %s users.', $reset_count );
$message = sprintf( $message, number_format_i18n( $reset_count ) );
$messages[] = wp_get_admin_notice(
'additional_classes' => array( 'updated' ),
$messages[] = wp_get_admin_notice(
'additional_classes' => array( 'updated' ),
$messages[] = wp_get_admin_notice(
__( 'The current user’s role must have user editing capabilities.' ),
'additional_classes' => array( 'error' ),
$messages[] = wp_get_admin_notice(
__( 'Other user roles have been changed.' ),
'additional_classes' => array( 'updated' ),
$messages[] = wp_get_admin_notice(
__( 'You cannot delete the current user.' ),
'additional_classes' => array( 'error' ),
$messages[] = wp_get_admin_notice(
__( 'Other users have been deleted.' ),
'additional_classes' => array( 'updated' ),
$messages[] = wp_get_admin_notice(
__( 'User removed from this site.' ),
'additional_classes' => array( 'updated', 'fade' ),
$messages[] = wp_get_admin_notice(
__( 'You cannot remove the current user.' ),
'additional_classes' => array( 'error' ),
$messages[] = wp_get_admin_notice(
__( 'Other users have been removed.' ),
'additional_classes' => array( 'updated', 'fade' ),
if ( isset( $errors ) && is_wp_error( $errors ) ) :
foreach ( $errors->get_error_messages() as $err ) {
$error_message .= "<li>$err</li>\n";
'<ul>' . $error_message . '</ul>',
'additional_classes' => array( 'error' ),
if ( ! empty( $messages ) ) {
foreach ( $messages as $msg ) {
<h1 class="wp-heading-inline">
<?php echo esc_html( $title ); ?>
if ( current_user_can( 'create_users' ) ) {
'<a href="%1$s" class="page-title-action">%2$s</a>',
esc_url( admin_url( 'user-new.php' ) ),
} elseif ( is_multisite() && current_user_can( 'promote_users' ) ) {
'<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">';
/* translators: %s: Search query. */
__( 'Search results for: %s' ),
'<strong>' . esc_html( $usersearch ) . '</strong>'
<hr class="wp-header-end">
<?php $wp_list_table->views(); ?>
<?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 $wp_list_table->display(); ?>
<div class="clear"></div>
} // End of the $doaction switch.
require_once ABSPATH . 'wp-admin/admin-footer.php';