set_parentage( $parent_file ); ?>
render_screen_meta(); if ( is_network_admin() ) { /** * Prints network admin screen notices. * * @since 3.1.0 */ do_action( 'network_admin_notices' ); } elseif ( is_user_admin() ) { /** * Prints user admin screen notices. * * @since 3.1.0 */ do_action( 'user_admin_notices' ); } else { /** * Prints admin screen notices. * * @since 3.1.0 */ do_action( 'admin_notices' ); } /** * Prints generic admin screen notices. * * @since 3.1.0 */ do_action( 'all_admin_notices' ); if ( 'options-general.php' === $parent_file ) { require ABSPATH . 'wp-admin/options-head.php'; } PK¤�S]^°ï¸¸ index.phpnu„[µü¤' . __( 'Welcome to your WordPress Dashboard!' ) . '

'; $help .= '

' . __( 'The Dashboard is the first place you will come to every time you log into your site. It is where you will find all your WordPress tools. If you need help, just click the “Help” tab above the screen title.' ) . '

'; $screen = get_current_screen(); $screen->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => $help, ) ); // Help tabs. $help = '

' . __( 'The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom.' ) . '

'; $help .= '

' . __( 'Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information.' ) . '

'; $screen->add_help_tab( array( 'id' => 'help-navigation', 'title' => __( 'Navigation' ), 'content' => $help, ) ); $help = '

' . __( 'You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.' ) . '

'; $help .= '

' . __( 'Screen Options — Use the Screen Options tab to choose which Dashboard boxes to show.' ) . '

'; $help .= '

' . __( 'Drag and Drop — To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.' ) . '

'; $help .= '

' . __( 'Box Controls — Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a “Configure” link in the title bar if you hover over it.' ) . '

'; $screen->add_help_tab( array( 'id' => 'help-layout', 'title' => __( 'Layout' ), 'content' => $help, ) ); $help = '

' . __( 'The boxes on your Dashboard screen are:' ) . '

'; if ( current_user_can( 'edit_theme_options' ) ) { $help .= '

' . __( 'Welcome — Shows links for some of the most common tasks when setting up a new site.' ) . '

'; } if ( current_user_can( 'view_site_health_checks' ) ) { $help .= '

' . __( 'Site Health Status — Informs you of any potential issues that should be addressed to improve the performance or security of your website.' ) . '

'; } if ( current_user_can( 'edit_posts' ) ) { $help .= '

' . __( 'At a Glance — Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.' ) . '

'; } $help .= '

' . __( 'Activity — Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them.' ) . '

'; if ( is_blog_admin() && current_user_can( 'edit_posts' ) ) { $help .= '

' . __( "Quick Draft — Allows you to create a new post and save it as a draft. Also displays links to the 3 most recent draft posts you've started." ) . '

'; } $help .= '

' . sprintf( /* translators: %s: WordPress Planet URL. */ __( 'WordPress Events and News — Upcoming events near you as well as the latest news from the official WordPress project and the WordPress Planet.' ), __( 'https://planet.wordpress.org/' ) ) . '

'; $screen->add_help_tab( array( 'id' => 'help-content', 'title' => __( 'Content' ), 'content' => $help, ) ); unset( $help ); $wp_version = get_bloginfo( 'version', 'display' ); /* translators: %s: WordPress version. */ $wp_version_text = sprintf( __( 'Version %s' ), $wp_version ); $is_dev_version = preg_match( '/alpha|beta|RC/', $wp_version ); if ( ! $is_dev_version ) { $version_url = sprintf( /* translators: %s: WordPress version. */ esc_url( __( 'https://wordpress.org/documentation/wordpress-version/version-%s/' ) ), sanitize_title( $wp_version ) ); $wp_version_text = sprintf( '%2$s', $version_url, $wp_version_text ); } $screen->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Dashboard' ) . '

' . '

' . __( 'Support forums' ) . '

' . '

' . $wp_version_text . '

' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

'success', 'dismissible' => true, ) ); endif; endif; ?> user_email !== get_option( 'admin_email' ) ) ); if ( $hide ) { $classes .= ' hidden'; } ?>
' . __( 'You need a higher level of permission.' ) . '' . '

' . __( 'Sorry, you are not allowed to customize this site.' ) . '

', 403 ); } /** * @global WP_Scripts $wp_scripts * @global WP_Customize_Manager $wp_customize */ global $wp_scripts, $wp_customize; if ( $wp_customize->changeset_post_id() ) { $changeset_post = get_post( $wp_customize->changeset_post_id() ); if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->edit_post, $changeset_post->ID ) ) { wp_die( '

' . __( 'You need a higher level of permission.' ) . '

' . '

' . __( 'Sorry, you are not allowed to edit this changeset.' ) . '

', 403 ); } $missed_schedule = ( 'future' === $changeset_post->post_status && get_post_time( 'G', true, $changeset_post ) < time() ); if ( $missed_schedule ) { /* * Note that an Ajax request spawns here instead of just calling `wp_publish_post( $changeset_post->ID )`. * * Because WP_Customize_Manager is not instantiated for customize.php with the `settings_previewed=false` * argument, settings cannot be reliably saved. Some logic short-circuits if the current value is the * same as the value being saved. This is particularly true for options via `update_option()`. * * By opening an Ajax request, this is avoided and the changeset is published. See #39221. */ $nonces = $wp_customize->get_nonces(); $request_args = array( 'nonce' => $nonces['save'], 'customize_changeset_uuid' => $wp_customize->changeset_uuid(), 'wp_customize' => 'on', 'customize_changeset_status' => 'publish', ); ob_start(); ?> ' . __( 'Your scheduled changes just published' ) . '' . '

' . __( 'Customize New Changes' ) . '

' . $script, 200 ); } if ( in_array( get_post_status( $changeset_post->ID ), array( 'publish', 'trash' ), true ) ) { wp_die( '

' . __( 'An error occurred while saving your changeset.' ) . '

' . '

' . __( 'Please try again or start a new changeset. This changeset cannot be further modified.' ) . '

' . '

' . __( 'Customize New Changes' ) . '

', 403 ); } } $url = ! empty( $_REQUEST['url'] ) ? esc_url_raw( wp_unslash( $_REQUEST['url'] ) ) : ''; $return = ! empty( $_REQUEST['return'] ) ? esc_url_raw( wp_unslash( $_REQUEST['return'] ) ) : ''; $autofocus = ! empty( $_REQUEST['autofocus'] ) && is_array( $_REQUEST['autofocus'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_REQUEST['autofocus'] ) ) : array(); if ( ! empty( $url ) ) { $wp_customize->set_preview_url( $url ); } if ( ! empty( $return ) ) { $wp_customize->set_return_url( $return ); } if ( ! empty( $autofocus ) ) { $wp_customize->set_autofocus( $autofocus ); } // Let's roll. header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); wp_user_settings(); _wp_admin_html_begin(); $registered = $wp_scripts->registered; $wp_scripts = new WP_Scripts(); $wp_scripts->registered = $registered; add_action( 'customize_controls_print_scripts', 'print_head_scripts', 20 ); add_action( 'customize_controls_print_footer_scripts', '_wp_footer_scripts' ); add_action( 'customize_controls_print_styles', 'print_admin_styles', 20 ); /** * Fires when Customizer controls are initialized, before scripts are enqueued. * * @since 3.4.0 */ do_action( 'customize_controls_init' ); wp_enqueue_script( 'heartbeat' ); wp_enqueue_script( 'customize-controls' ); wp_enqueue_style( 'customize-controls' ); /** * Fires when enqueuing Customizer control scripts. * * @since 3.4.0 */ do_action( 'customize_controls_enqueue_scripts' ); $body_class = 'wp-core-ui wp-customizer js'; if ( wp_is_mobile() ) : $body_class .= ' mobile'; add_filter( 'admin_viewport_meta', '_customizer_mobile_viewport_meta' ); endif; if ( $wp_customize->is_ios() ) { $body_class .= ' ios'; } if ( is_rtl() ) { $body_class .= ' rtl'; } $body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) ); $admin_color = get_user_option( 'admin_color' ); $body_class .= ' admin-color-' . sanitize_html_class( is_string( $admin_color ) ? $admin_color : '', 'modern' ); if ( wp_use_widgets_block_editor() ) { $body_class .= ' wp-embed-responsive'; } $admin_title = sprintf( $wp_customize->get_document_title_template(), __( 'Loading…' ) ); ?> <?php echo esc_html( $admin_title ); ?>
theme()->get( 'RequiresWP' ) ); $compatible_php = is_php_version_compatible( $wp_customize->theme()->get( 'RequiresPHP' ) ); ?> is_theme_active() ? __( 'Publish' ) : __( 'Activate & Publish' ); ?>

    ' . get_bloginfo( 'name', 'display' ) . '' ); ?>

    Documentation on Customizer' ); ?>

    PK¤�S]`i#export-personal-data.phpnu„[µü¤add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( 'This screen is where you manage requests for an export of personal data.' ) . '

    ' . '

    ' . __( 'Privacy Laws around the world require businesses and online services to provide an export of some of the data they collect about an individual, and to deliver that export on request. The rights those laws enshrine are sometimes called the "Right of Data Portability". It allows individuals to obtain and reuse their personal data for their own purposes across different services. It allows them to move, copy or transfer personal data easily from one IT environment to another.' ) . '

    ' . '

    ' . __( 'The tool associates data stored in WordPress with a supplied email address, including profile data and comments.' ) . '

    ' . '

    ' . __( 'Note: Since this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with export requests. For example, you should also send the requester some of the data collected from or stored with the 3rd party services your organization uses.' ) . '

    ', ) ); get_current_screen()->add_help_tab( array( 'id' => 'default-data', 'title' => __( 'Default Data' ), 'content' => '

    ' . __( 'WordPress collects (but never publishes) a limited amount of data from registered users who have logged in to the site. Generally, these users are people who contribute to the site in some way -- content, store management, and so on. With rare exceptions, these users do not include occasional visitors who might have registered to comment on articles or buy products. The data WordPress retains can include:' ) . '

    ' . '

    ' . __( 'Profile Information — user email address, username, display name, nickname, first name, last name, description/bio, and registration date.' ) . '

    ' . '

    ' . __( 'Community Events Location — The IP Address of the user, which populates the Upcoming Community Events dashboard widget with relevant information.' ) . '

    ' . '

    ' . __( 'Session Tokens — User login information, IP Addresses, Expiration Date, User Agent (Browser/OS), and Last Login.' ) . '

    ' . '

    ' . __( 'Comments — For user comments, Email Address, IP Address, User Agent (Browser/OS), Date/Time, Comment Content, and Content URL.' ) . '

    ' . '

    ' . __( 'Media — A list of URLs for media files the user uploads.' ) . '

    ', ) ); $privacy_policy_guide = '

    ' . sprintf( /* translators: %s: URL to Privacy Policy Guide screen. */ __( 'If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Exporter tool. This information may be available in the Privacy Policy Guide.' ), admin_url( 'options-privacy.php?tab=policyguide' ) ) . '

    '; get_current_screen()->add_help_tab( array( 'id' => 'plugin-data', 'title' => __( 'Plugin Data' ), 'content' => '

    ' . __( 'Many plugins may collect or store personal data either in the WordPress database or remotely. Any Export Personal Data request should include data from plugins as well.' ) . '

    ' . $privacy_policy_guide . '

    ' . __( 'If you are a plugin author, you can learn more about how to add the Personal Data Exporter to a plugin.' ) . '

    ', ) ); get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Export Personal Data' ) . '

    ' . '

    ' . __( 'Support forums' ) . '

    ' ); // Handle list table actions. _wp_personal_data_handle_actions(); // Cleans up failed and expired requests before displaying the list table. _wp_personal_data_cleanup_requests(); wp_enqueue_script( 'privacy-tools' ); add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'export_personal_data_requests_per_page', ) ); $_list_table_args = array( 'plural' => 'privacy_requests', 'singular' => 'privacy_request', ); $requests_table = _get_list_table( 'WP_Privacy_Data_Export_Requests_List_Table', $_list_table_args ); $requests_table->screen->set_screen_reader_content( array( 'heading_views' => __( 'Filter export personal data list' ), 'heading_pagination' => __( 'Export personal data list navigation' ), 'heading_list' => __( 'Export personal data list' ), ) ); $requests_table->process_bulk_action(); $requests_table->prepare_items(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>



    views(); ?>
    search_box( __( 'Search Requests' ), 'requests' ); ?>
    display(); $requests_table->embed_scripts(); ?>
    add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( 'You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within the dashboard, while the rest control external publishing methods. For more information on any of these methods, use the documentation links.' ) . '

    ' . '

    ' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

    ', ) ); /** This filter is documented in wp-admin/options.php */ if ( apply_filters( 'enable_post_by_email_configuration', true ) ) { get_current_screen()->add_help_tab( array( 'id' => 'options-postemail', 'title' => __( 'Post Via Email' ), 'content' => '

    ' . __( 'Post via email settings allow you to send your WordPress installation an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret.' ) . '

    ', ) ); } /** This filter is documented in wp-admin/options-writing.php */ if ( apply_filters( 'enable_update_services_configuration', true ) ) { get_current_screen()->add_help_tab( array( 'id' => 'options-services', 'title' => __( 'Update Services' ), 'content' => '

    ' . __( 'If desired, WordPress will automatically alert various services of your new posts.' ) . '

    ', ) ); } get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Writing Settings' ) . '

    ' . '

    ' . __( 'Support forums' ) . '

    ' ); wp_enqueue_script( 'user-profile' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    %s', wp_generate_password( 8, false ) ), sprintf( '%s', wp_generate_password( 8, false ) ), sprintf( '%s', wp_generate_password( 8, false ) ) ); ?>

    Update Services because of your site’s visibility settings.' ), __( 'https://developer.wordpress.org/advanced-administration/wordpress/update-services/' ), 'options-reading.php' ); ?>

    PK¤�S]pþèÕadmin-ajax.phpnu„[µü¤' . __( 'You need a higher level of permission.' ) . '' . '

    ' . __( 'Sorry, you are not allowed to list users.' ) . '

    ', 403 ); } $wp_list_table = _get_list_table( 'WP_Users_List_Table' ); $pagenum = $wp_list_table->get_pagenum(); // Used in the HTML title tag. $title = __( 'Users' ); $parent_file = 'users.php'; add_screen_option( 'per_page' ); // Contextual help - choose Help on the top right of admin panel to preview this. get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( '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.' ) . '

    ' . '

    ' . __( 'To add a new user for your site, click the Add User button at the top of the screen or Add User in the Users menu section.' ) . '

    ', ) ); get_current_screen()->add_help_tab( array( 'id' => 'screen-content', 'title' => __( 'Screen Content' ), 'content' => '

    ' . __( 'You can customize the display of this screen in a number of ways:' ) . '

    ' . '
      ' . '
    • ' . __( 'You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.' ) . '
    • ' . '
    • ' . __( 'You can filter the list of users by User Role using the text links above the users list to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed.' ) . '
    • ' . '
    • ' . __( 'You can view all posts made by a user by clicking on the number under the Posts column.' ) . '
    • ' . '
    ', ) ); $help = '

    ' . __( 'Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:' ) . '

    ' . '
      ' . '
    • ' . __( 'Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.' ) . '
    • '; if ( is_multisite() ) { $help .= '
    • ' . __( 'Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using bulk actions.' ) . '
    • '; } else { $help .= '
    • ' . __( 'Delete 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.' ) . '
    • '; } $help .= '
    • ' . __( 'View takes you to a public author archive which lists all the posts published by the user.' ) . '
    • '; if ( current_user_can( 'edit_users' ) ) { $help .= '
    • ' . __( 'Send password reset sends the user an email with a link to set a new password.' ) . '
    • '; } $help .= '
    '; get_current_screen()->add_help_tab( array( 'id' => 'action-links', 'title' => __( 'Available Actions' ), 'content' => $help, ) ); unset( $help ); get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Managing Users' ) . '

    ' . '

    ' . __( 'Descriptions of Roles and Capabilities' ) . '

    ' . '

    ' . __( 'Support forums' ) . '

    ' ); get_current_screen()->set_screen_reader_content( array( 'heading_views' => __( 'Filter users list' ), 'heading_pagination' => __( 'Users list navigation' ), 'heading_list' => __( 'Users list' ), ) ); if ( empty( $_REQUEST ) ) { $referer = ''; } elseif ( isset( $_REQUEST['wp_http_referer'] ) ) { $redirect = remove_query_arg( array( 'wp_http_referer', 'updated', 'delete_count' ), wp_unslash( $_REQUEST['wp_http_referer'] ) ); $referer = ''; } else { $redirect = 'users.php'; $referer = ''; } $update = ''; switch ( $wp_list_table->current_action() ) { /* Bulk Dropdown menu Role changes */ case 'promote': check_admin_referer( 'bulk-users' ); if ( ! current_user_can( 'promote_users' ) ) { wp_die( __( 'Sorry, you are not allowed to edit this user.' ), 403 ); } if ( empty( $_REQUEST['users'] ) ) { wp_redirect( $redirect ); exit; } $editable_roles = get_editable_roles(); $role = $_REQUEST['new_role']; // Mock `none` as editable role. $editable_roles['none'] = array( 'name' => __( '— No role for this site —' ), ); if ( ! $role || empty( $editable_roles[ $role ] ) ) { wp_die( __( 'Sorry, you are not allowed to give users that role.' ), 403 ); } if ( 'none' === $role ) { $role = ''; } $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, be a multisite super admin and must not be empty. if ( $id === $current_user->ID ) { if ( '' === $role ) { wp_die( __( 'Sorry, you cannot remove your own role.' ), 403 ); } if ( $wp_roles->role_objects[ $role ]->has_cap( 'promote_users' ) || ( is_multisite() && current_user_can( 'manage_network_users' ) ) ) { continue; } $update = 'err_admin_role'; continue; } // If the user doesn't already belong to the blog, bail. if ( is_multisite() && ! is_user_member_of_blog( $id ) ) { wp_die( '

    ' . __( 'An error occurred.' ) . '

    ' . '

    ' . __( 'One of the selected users is not a member of this site.' ) . '

    ', 403 ); } $user = get_userdata( $id ); // If $role is empty, none will be set. $user->set_role( $role ); } wp_redirect( add_query_arg( 'update', $update, $redirect ) ); exit; case 'dodelete': if ( is_multisite() ) { wp_die( __( 'User deletion is not allowed from this screen.' ), 400 ); } check_admin_referer( 'delete-users' ); if ( empty( $_REQUEST['users'] ) ) { wp_redirect( $redirect ); exit; } $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); if ( empty( $_REQUEST['delete_option'] ) ) { $url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $user_ids ) . '&error=true' ); $url = str_replace( '&', '&', wp_nonce_url( $url, 'bulk-users' ) ); wp_redirect( $url ); exit; } if ( ! current_user_can( 'delete_users' ) ) { wp_die( __( 'Sorry, you are not allowed to delete users.' ), 403 ); } $update = 'del'; $delete_count = 0; 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 ) { $update = 'err_admin_del'; continue; } if ( 'reassign' === $_REQUEST['delete_option'][ $id ] && empty( $_REQUEST['reassign_user'][ $id ] ) ) { $update = 'err_missing_reassign'; continue; } switch ( $_REQUEST['delete_option'][ $id ] ) { case 'delete': wp_delete_user( $id ); break; case 'reassign': wp_delete_user( $id, $_REQUEST['reassign_user'][ $id ] ); break; } ++$delete_count; } $redirect = add_query_arg( array( 'delete_count' => $delete_count, 'update' => $update, ), $redirect ); wp_redirect( $redirect ); exit; 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(); } $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); $reset_count = 0; foreach ( $user_ids as $id ) { if ( ! current_user_can( 'edit_user', $id ) ) { wp_die( __( 'Sorry, you are not allowed to edit this user.' ) ); } if ( $id === $current_user->ID ) { $update = 'err_admin_reset'; continue; } // Send the password reset link. $user = get_userdata( $id ); if ( true === retrieve_password( $user->user_login ) ) { ++$reset_count; } } $redirect = add_query_arg( array( 'reset_count' => $reset_count, 'update' => 'resetpassword', ), $redirect ); wp_redirect( $redirect ); exit; case 'delete': if ( is_multisite() ) { wp_die( __( 'User deletion is not allowed from this screen.' ), 400 ); } check_admin_referer( 'bulk-users' ); if ( empty( $_REQUEST['users'] ) && empty( $_REQUEST['user'] ) ) { wp_redirect( $redirect ); exit; } if ( ! current_user_can( 'delete_users' ) ) { $errors = new WP_Error( 'edit_users', __( 'Sorry, you are not allowed to delete users.' ) ); } if ( empty( $_REQUEST['users'] ) ) { $user_ids = array( (int) $_REQUEST['user'] ); } else { $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); } $all_user_ids = $user_ids; if ( in_array( $current_user->ID, $user_ids, true ) ) { $user_ids = array_diff( $user_ids, array( $current_user->ID ) ); } require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    ' . __( 'Error:' ) . ' ' . __( 'Please select an option.' ), array( 'additional_classes' => array( 'error' ), ) ); endif; ?>

      ID ) { echo '
    • '; printf( /* translators: 1: User ID, 2: User login. */ __( 'ID #%1$s: %2$s The current user will not be deleted.' ), $id, $user->user_login ); echo "
    • \n"; } else { echo '
    • '; printf( '', esc_attr( $id ) ); /** * Filters whether the users being deleted have additional content * associated with them outside of the `post_author` and `link_owner` relationships. * * @since 5.2.0 * * @param bool $users_have_additional_content Whether the users have additional content. Default false. * @param int[] $user_ids Array of IDs for users being deleted. */ $user_has_content = (bool) apply_filters( 'users_have_additional_content', false, array( $id ) ); if ( ! $user_has_content ) { if ( $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_author = %d LIMIT 1", $id ) ) ) { $user_has_content = true; } elseif ( $wpdb->get_var( $wpdb->prepare( "SELECT link_id FROM {$wpdb->links} WHERE link_owner = %d LIMIT 1", $id ) ) ) { $user_has_content = true; } } if ( ! $user_has_content ) { ?>

      ' . $user->user_login . '', $id ); ?>

      ' . $user->user_login . '', $id ); ?>
      • __( 'Select a user' ), 'option_none_value' => '', 'name' => 'reassign_user[' . $id . ']', 'id' => 'reassign_user_' . $id, 'exclude' => $user_ids, 'show' => 'display_name_with_login', ) ); ?>
      \n"; ++$go_delete; } } ?>

    $update ), $redirect ); wp_redirect( $redirect ); exit; case 'remove': check_admin_referer( 'bulk-users' ); if ( ! is_multisite() ) { wp_die( __( 'You cannot remove users.' ), 400 ); } if ( empty( $_REQUEST['users'] ) && empty( $_REQUEST['user'] ) ) { wp_redirect( $redirect ); exit; } 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'] ); } else { $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); } require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

      '; printf( /* translators: 1: User ID, 2: User login. */ __( 'ID #%1$s: %2$s Sorry, you are not allowed to remove this user.' ), $id, $user->user_login ); echo "\n"; } else { echo '
    • '; printf( '', esc_attr( $id ) ); printf( /* translators: 1: User ID, 2: User login. */ __( 'ID #%1$s: %2$s' ), $id, $user->user_login ); echo "
    • \n"; $go_remove = true; } } ?>

    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 ); exit; } $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; } require_once ABSPATH . 'wp-admin/admin-header.php'; $messages = array(); if ( isset( $_GET['update'] ) ) : $delete_count = isset( $_GET['delete_count'] ) ? (int) $_GET['delete_count'] : 0; switch ( $_GET['update'] ) { case 'del': case 'del_many': if ( 1 === $delete_count ) { $message = __( 'User deleted.' ); } else { /* 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( $message, array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); break; case 'add': $message = __( 'New user created.' ); $user_id = $_GET['id'] ?? false; if ( $user_id && current_user_can( 'edit_user', $user_id ) ) { $message .= sprintf( ' %2$s', esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ), __( 'Edit user' ) ); } $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; if ( 1 === $reset_count ) { $message = __( 'Password reset link sent.' ); } else { /* 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( $message, array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); break; case 'promote': $messages[] = wp_get_admin_notice( __( 'Changed roles.' ), array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); break; case 'err_admin_role': $messages[] = wp_get_admin_notice( __( 'You cannot change your own role to one that does not allow managing other users. Your role was not changed.' ), array( 'id' => 'message', 'additional_classes' => array( 'error' ), 'dismissible' => true, ) ); if ( $delete_count > 0 ) { $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[] = wp_get_admin_notice( __( 'You cannot delete the current user.' ), array( 'id' => 'message', 'additional_classes' => array( 'error' ), 'dismissible' => true, ) ); if ( $delete_count > 0 ) { $messages[] = wp_get_admin_notice( __( 'Other users have been deleted.' ), array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); } break; case 'err_missing_reassign': $messages[] = wp_get_admin_notice( __( 'Users could not be deleted because no user was selected for content reassignment.' ), array( 'id' => 'message', 'additional_classes' => array( 'error' ), 'dismissible' => true, ) ); if ( $delete_count > 0 ) { $messages[] = wp_get_admin_notice( __( 'Other users have been deleted.' ), array( 'id' => 'message', 'additional_classes' => array( 'updated' ), 'dismissible' => true, ) ); } break; case 'remove': $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[] = 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; ?> get_error_messages() as $err ) { $error_message .= "