wp_dashboard_setup

The timeline below displays how wordpress function wp_dashboard_setup has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global callable[] $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $wp_dashboard_control_callbacks = array();
    // Browser version
    $check_browser = wp_check_browser_version();
    if ($check_browser && $check_browser['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($check_browser['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $check_php = wp_check_php_version();
    if ($check_php && current_user_can('update_php')) {
        // If "not acceptable" the widget will be shown.
        if (isset($check_php['is_acceptable']) && !$check_php['is_acceptable']) {
            add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
            if ($check_php['is_lower_than_future_minimum']) {
                wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Required'), 'wp_dashboard_php_nag');
            } else {
                wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Recommended'), 'wp_dashboard_php_nag');
            }
        }
    }
    // Site Health.
    if (current_user_can('view_site_health_checks') && !is_network_admin()) {
        if (!class_exists('WP_Site_Health')) {
            require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
        }
        WP_Site_Health::get_instance();
        wp_enqueue_style('site-health');
        wp_enqueue_script('site-health');
        wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health');
    }
    // Right Now.
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget.
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget.
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News.
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // Hack - but the same hack wp-admin/widgets.php uses.
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 6.1

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global callable[] $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $response = wp_check_php_version();
    if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) {
        add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
        wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Recommended'), 'wp_dashboard_php_nag');
    }
    // Site Health.
    if (current_user_can('view_site_health_checks') && !is_network_admin()) {
        if (!class_exists('WP_Site_Health')) {
            require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
        }
        WP_Site_Health::get_instance();
        wp_enqueue_style('site-health');
        wp_enqueue_script('site-health');
        wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health');
    }
    // Right Now.
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget.
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget.
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News.
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // Hack - but the same hack wp-admin/widgets.php uses.
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 5.6

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global callable[] $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $response = wp_check_php_version();
    if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) {
        add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
        wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Required'), 'wp_dashboard_php_nag');
    }
    // Site Health.
    if (current_user_can('view_site_health_checks') && !is_network_admin()) {
        if (!class_exists('WP_Site_Health')) {
            require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
        }
        WP_Site_Health::get_instance();
        wp_enqueue_style('site-health');
        wp_enqueue_script('site-health');
        wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health');
    }
    // Right Now.
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget.
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget.
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News.
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // Hack - but the same hack wp-admin/widgets.php uses.
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 5.5

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $response = wp_check_php_version();
    if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) {
        add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
        wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Required'), 'wp_dashboard_php_nag');
    }
    // Site Health.
    if (current_user_can('view_site_health_checks') && !is_network_admin()) {
        if (!class_exists('WP_Site_Health')) {
            require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
        }
        WP_Site_Health::get_instance();
        wp_enqueue_style('site-health');
        wp_enqueue_script('site-health');
        wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health');
    }
    // Right Now.
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget.
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget.
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News.
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // Hack - but the same hack wp-admin/widgets.php uses.
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 5.4

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $response = wp_check_php_version();
    if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) {
        add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
        wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Required'), 'wp_dashboard_php_nag');
    }
    // Site Health.
    if (current_user_can('view_site_health_checks') && !is_network_admin()) {
        if (!class_exists('WP_Site_Health')) {
            require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
        }
        WP_Site_Health::get_instance();
        wp_enqueue_style('site-health');
        wp_enqueue_script('site-health');
        wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health');
    }
    // Right Now.
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget.
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget.
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News.
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // Hack - but the same hack wp-admin/widgets.php uses.
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 5.1

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // PHP Version.
    $response = wp_check_php_version();
    if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) {
        add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class');
        wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Required'), 'wp_dashboard_php_nag');
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param string[] $dashboard_widgets An array of dashboard widget IDs.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 5.0

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/includes/meta-boxes.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 9.8

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    // Try Gutenberg
    // If Gutenberg isn't activated, only show the panel to users who can install and activate it.
    $plugins = get_plugins();
    if (is_plugin_inactive('gutenberg/gutenberg.php') && !current_user_can('install_plugins')) {
        remove_action('try_gutenberg_panel', 'wp_try_gutenberg_panel');
    }
    // If Gutenberg is activated, only show it to users who can use it.
    if (is_plugin_active('gutenberg/gutenberg.php') && !current_user_can('edit_posts')) {
        remove_action('try_gutenberg_panel', 'wp_try_gutenberg_panel');
    }
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.9

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.8

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress Events and News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.6

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filters the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filters the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filters the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.4

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filter the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filter the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filter the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.3

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 *
 * @global array $wp_registered_widgets
 * @global array $wp_registered_widget_controls
 * @global array $wp_dashboard_control_callbacks
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can('edit_posts')) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filter the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filter the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filter the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 4.0

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can('edit_posts')) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filter the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filter the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filter the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 3.9

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    $update = false;
    $widget_options = get_option('dashboard_widget_options');
    if (!$widget_options || !is_array($widget_options)) {
        $widget_options = array();
    }
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can('edit_posts')) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    if (is_network_admin()) {
        /**
         * Fires after core widgets for the Network Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_network_dashboard_setup');
        /**
         * Filter the list of widgets to load for the Network Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        /**
         * Fires after core widgets for the User Admin dashboard have been registered.
         *
         * @since 3.1.0
         */
        do_action('wp_user_dashboard_setup');
        /**
         * Filter the list of widgets to load for the User Admin dashboard.
         *
         * @since 3.1.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        /**
         * Fires after core widgets for the admin dashboard have been registered.
         *
         * @since 2.5.0
         */
        do_action('wp_dashboard_setup');
        /**
         * Filter the list of widgets to load for the admin dashboard.
         *
         * @since 2.5.0
         *
         * @param array $dashboard_widgets An array of dashboard widgets.
         */
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    if ($update) {
        update_option('dashboard_widget_options', $widget_options);
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 3.8

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    $update = false;
    $widget_options = get_option('dashboard_widget_options');
    if (!$widget_options || !is_array($widget_options)) {
        $widget_options = array();
    }
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Activity Widget
    if (is_blog_admin()) {
        wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can('edit_posts')) {
        $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Drafts'));
        wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press');
    }
    // WordPress News
    wp_add_dashboard_widget('dashboard_primary', __('WordPress News'), 'wp_dashboard_primary');
    // Hook to register new widgets
    // Filter widget order
    if (is_network_admin()) {
        do_action('wp_network_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        do_action('wp_user_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        do_action('wp_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    if ($update) {
        update_option('dashboard_widget_options', $widget_options);
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}

WordPress Version: 3.7

/**
 * WordPress Dashboard Widget Administration Screen API
 *
 * @package WordPress
 * @subpackage Administration
 */
/**
 * Registers dashboard widgets.
 *
 * Handles POST data, sets up filters.
 *
 * @since 2.5.0
 */
function wp_dashboard_setup()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    $wp_dashboard_control_callbacks = array();
    $screen = get_current_screen();
    $update = false;
    $widget_options = get_option('dashboard_widget_options');
    if (!$widget_options || !is_array($widget_options)) {
        $widget_options = array();
    }
    /* Register Widgets and Controls */
    $response = wp_check_browser_version();
    if ($response && $response['upgrade']) {
        add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class');
        if ($response['insecure']) {
            wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag');
        } else {
            wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag');
        }
    }
    // Right Now
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_right_now', __('Right Now'), 'wp_dashboard_right_now');
    }
    if (is_network_admin()) {
        wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now');
    }
    // Recent Comments Widget
    if (is_blog_admin() && current_user_can('moderate_comments')) {
        if (!isset($widget_options['dashboard_recent_comments']) || !isset($widget_options['dashboard_recent_comments']['items'])) {
            $update = true;
            $widget_options['dashboard_recent_comments'] = array('items' => 5);
        }
        $recent_comments_title = __('Recent Comments');
        wp_add_dashboard_widget('dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control');
    }
    // Incoming Links Widget
    if (is_blog_admin() && current_user_can('publish_posts')) {
        if (!isset($widget_options['dashboard_incoming_links']) || !isset($widget_options['dashboard_incoming_links']['home']) || $widget_options['dashboard_incoming_links']['home'] != get_option('home')) {
            $update = true;
            $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
            $widget_options['dashboard_incoming_links'] = array('home' => get_option('home'), 'link' => apply_filters('dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit(get_option('home'))), 'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters('dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url']) : apply_filters('dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit(get_option('home'))), 'items' => $num_items, 'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false);
        }
        wp_add_dashboard_widget('dashboard_incoming_links', __('Incoming Links'), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control');
    }
    // WP Plugins Widget
    if (!is_multisite() && is_blog_admin() && current_user_can('install_plugins') || is_network_admin() && current_user_can('manage_network_plugins') && current_user_can('install_plugins')) {
        wp_add_dashboard_widget('dashboard_plugins', __('Plugins'), 'wp_dashboard_plugins');
    }
    // QuickPress Widget
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_quick_press', __('QuickPress'), 'wp_dashboard_quick_press');
    }
    // Recent Drafts
    if (is_blog_admin() && current_user_can('edit_posts')) {
        wp_add_dashboard_widget('dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts');
    }
    // Primary feed (Dev Blog) Widget
    if (!isset($widget_options['dashboard_primary'])) {
        $update = true;
        $widget_options['dashboard_primary'] = array('link' => apply_filters('dashboard_primary_link', __('http://wordpress.org/news/')), 'url' => apply_filters('dashboard_primary_feed', __('http://wordpress.org/news/feed/')), 'title' => apply_filters('dashboard_primary_title', __('WordPress Blog')), 'items' => 2, 'show_summary' => 1, 'show_author' => 0, 'show_date' => 1);
    }
    wp_add_dashboard_widget('dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control');
    // Secondary Feed (Planet) Widget
    if (!isset($widget_options['dashboard_secondary'])) {
        $update = true;
        $widget_options['dashboard_secondary'] = array('link' => apply_filters('dashboard_secondary_link', __('http://planet.wordpress.org/')), 'url' => apply_filters('dashboard_secondary_feed', __('http://planet.wordpress.org/feed/')), 'title' => apply_filters('dashboard_secondary_title', __('Other WordPress News')), 'items' => 5, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0);
    }
    wp_add_dashboard_widget('dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control');
    // Hook to register new widgets
    // Filter widget order
    if (is_network_admin()) {
        do_action('wp_network_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array());
    } elseif (is_user_admin()) {
        do_action('wp_user_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array());
    } else {
        do_action('wp_dashboard_setup');
        $dashboard_widgets = apply_filters('wp_dashboard_widgets', array());
    }
    foreach ($dashboard_widgets as $widget_id) {
        $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : ($wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>');
        wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']);
    }
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    if ($update) {
        update_option('dashboard_widget_options', $widget_options);
    }
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'normal', '');
    /** This action is documented in wp-admin/edit-form-advanced.php */
    do_action('do_meta_boxes', $screen->id, 'side', '');
}