wp_dashboard_setup()

In this article

Registers dashboard widgets.

Description

Handles POST data, sets up filters.

Source

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', '' ); } 

Hooks

do_action( ‘do_meta_boxes’, string $post_type, string $context, WP_Post|object|string $post )

Fires after meta boxes have been added.

do_action( ‘wp_dashboard_setup’ )

Fires after core widgets for the admin dashboard have been registered.

apply_filters( ‘wp_dashboard_widgets’, string[] $dashboard_widgets )

Filters the list of widgets to load for the admin dashboard.

do_action( ‘wp_network_dashboard_setup’ )

Fires after core widgets for the Network Admin dashboard have been registered.

apply_filters( ‘wp_network_dashboard_widgets’, string[] $dashboard_widgets )

Filters the list of widgets to load for the Network Admin dashboard.

do_action( ‘wp_user_dashboard_setup’ )

Fires after core widgets for the User Admin dashboard have been registered.

apply_filters( ‘wp_user_dashboard_widgets’, string[] $dashboard_widgets )

Filters the list of widgets to load for the User Admin dashboard.

Changelog

VersionDescription
2.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.