Dashboard and Admin Screens

This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production.

This sub-section’s WordPress bibliography lists the reference material consulted while preparing these pages.

The administration area (/wp-admin/) is where everyone except anonymous visitors works: authors write, editors review, administrators configure. Its screens are assembled at run time from the current user’s capabilities, the active theme and the installed plugins, so two people logged in to the same site rarely see the same menu or the same Dashboard. This page describes what is on those screens in WordPress 7.1, what changed in the 7.0 refresh, where each personal preference is stored, and how a site owner can add, remove and restyle parts of the admin with a small must-use plugin.

This page was written against WordPress 7.1.3 (released 2026-10-06; 7.1.4, a security release of 2026-10-28, is the version to run in production), with PHP 7.4 as the minimum and PHP 8.3 or newer recommended, and WP-CLI 2.12.0, and checked on 2026-10-28. WordPress 7.2 is in beta and planned for 2026-12-08; nothing on this page is announced to change with it. The menu listings, widget lists and command output below were taken from a fresh 7.1.3 site (official wordpress:7.1.3-php8.4-apache and wordpress:cli-2.12.0-php8.4 images, MariaDB 11.8) running the Lumen Press must-use plugin shown further down.

Who sees what

Every admin screen and every menu entry is guarded by a capability. Core registers the menu in wp-admin/menu.php as an array of entries, each with the capability it needs, and skips the entries the current user lacks. A Contributor therefore sees Dashboard, Posts, Comments, Profile and Tools; an Editor also sees Media, Pages and the full Comments moderation; only an Administrator sees Appearance, Plugins, Users, Settings and the Site Health parts of Tools. Hiding a menu entry is not access control: the screens check the capability again when they load, and a plugin that only removes a menu item (remove_menu_page()) leaves the screen reachable by URL. Roles and capabilities are covered in Users, Roles and Profiles and Roles and Capabilities API.

The function is_admin() only says that the request is for an admin screen; it says nothing about the user being an administrator. Code that must restrict something to administrators checks current_user_can( 'manage_options' ) or a more specific capability.

The layout of an admin screen

Every classic admin screen has the same four parts:

Part Contents

Toolbar (also called the admin bar)

A dark strip across the top: the WordPress logo menu (About, Get Involved, WordPress.org, Documentation, Learn WordPress, Support, Feedback), the site name (with the site icon since 7.1, when one is set) linking to the front end, the updates and comments counters, the + New menu, the Command Palette button (7.0), and on the right "Howdy, name" with Edit Profile and Log Out. Plugins add their own nodes.

Main navigation

The left-hand menu of top-level sections with flyout submenus. Collapse Menu at the bottom shrinks it to icons; on narrow screens it becomes a menu toggle in the toolbar.

Work area

The screen itself: a list table, a settings form, the Dashboard widgets. The Screen Options and Help tabs hang below the toolbar on the right on the screens that provide them.

Footer

"Thank you for creating with WordPress." and the installed version, or "Get Version x.y.z" when an update is available.

The block editor, the Site Editor, the Font Library and other React-based screens replace the classic work area with their own full-height application, but keep the toolbar (see The toolbar in every editor (7.1)).

The main navigation in WordPress 7.1

This is the menu an Administrator sees on a single site running a block theme (Twenty Twenty-Five) with the Lumen catalogue post type registered:

Section Submenu

Dashboard

Home, Updates

Posts

All Posts, Add Post, Categories, Tags

Media

Library, Add Media File

Pages

All Pages, Add Page

Comments

(single screen, with the moderation count)

Books

Books, Add Post (added by the lp_book post type; its labels decide the names)

Appearance

Themes, Editor, Fonts

Plugins

Installed Plugins, Add Plugin

Users

All Users, Add User, Profile

Tools

Available Tools, Import, Export, Site Health, Export Personal Data, Erase Personal Data, Theme File Editor, Plugin File Editor

Settings

General, Connectors, Writing, Reading, Discussion, Media, Permalinks, Privacy

The menu depends on the theme and the version:

  • With a classic theme, Appearance shows Customize, Widgets, Menus, and Header or Background when the theme supports them, and the Theme File Editor and Plugin File Editor sit under Appearance and Plugins instead of Tools. With a block theme the Customizer is hidden unless a plugin or theme registers Customizer settings, and Appearance shows Editor (the Site Editor). A classic theme gets Design (the Style Book and patterns) when it supports editor-styles or has a theme.json, and Patterns otherwise.

  • Fonts (the Font Library page) is listed for every theme since 7.0; before that it was only reachable inside the Site Editor.

  • Settings > Connectors is new in 7.0. It stores the credentials of AI providers and other external services used by the AI Client; no provider is bundled with core, so the screen is empty until a provider plugin is installed.

  • DISALLOW_FILE_EDIT removes both file editors; DISALLOW_FILE_MODS also removes Add Plugin, the theme installer and the update buttons (see wp-config.php Reference).

  • On a Multisite network, Dashboard gains My Sites, and Super Admins have a separate Network Admin (/wp-admin/network/) with its own Dashboard; see Multisite Networks.

The Dashboard screen

Dashboard > Home (wp-admin/index.php) is the first screen after login. It is a grid of boxes, called dashboard widgets, that are technically meta boxes on the screen with the ID dashboard. The grid has one to four columns depending on the window width.

Core widgets

wp_dashboard_setup() in wp-admin/includes/dashboard.php registers the core widgets, each one only for users who can use it:

Widget (ID) Title Shown to What it shows

dashboard_site_health

Site Health Status

Users with view_site_health_checks (Administrators), not in Network Admin

The result of the last weekly Site Health check (stored in the health-check-site-status-result transient): "Good", "Should be improved" or critical issues, with a link to Tools > Site Health. Since 5.4.

dashboard_right_now

At a Glance

Users with edit_posts

Counts of posts, pages and comments, the WordPress version and active theme, and "Search engines discouraged" when Settings > Reading asks search engines not to index the site. Plugins add counts through the dashboard_glance_items filter. Called "Right Now" before 3.8.

dashboard_activity

Activity

Everyone on a single site

Scheduled posts ("Publishing Soon"), "Recently Published" posts and recent comments with moderation links.

dashboard_quick_press

Quick Draft

Users who can create posts

A title-and-content form that saves a post as a draft, and the user’s most recent drafts. The content is saved without block markup, so the block editor opens it as a Classic block that can be converted to blocks.

dashboard_primary

WordPress Events and News

Everyone

Upcoming WordCamps and meetups near the user, and the WordPress.org news feed. The location is guessed from an anonymised IP address sent to api.wordpress.org/events/ or typed by the user, and saved in the community-events-location user meta.

dashboard_php_nag, dashboard_browser_nag

PHP Update Required / Recommended; Your browser is out of date!

Only when WordPress.org reports the PHP version (to users with update_php, since 5.1) or the browser as outdated

A warning at the top of the grid with a link to update.

Above the grid, Administrators (edit_theme_options) see the Welcome panel with links to add a page, open the Site Editor or the Customizer, and edit styles. Dismissing it stores show_welcome_panel = 0 in the user’s meta; Screen Options brings it back. A plugin removes it for everyone with remove_action( 'welcome_panel', 'wp_welcome_panel' );.

The Network Admin Dashboard has a Right Now widget (network_dashboard_right_now) with site and user counts and search boxes, and plugins add widgets there with the wp_network_dashboard_setup action. The per-user Dashboard of a Multisite user without a site uses wp_user_dashboard_setup.

Arranging the Dashboard

Each user arranges the Dashboard for themselves, and each choice is a user meta row: the Screen Options checkboxes hide widgets (metaboxhidden_dashboard, an array of widget IDs), the arrow in a widget’s header collapses it (closedpostboxes_dashboard), dragging the header or using its up and down buttons (keyboard accessible) reorders widgets (meta-box-order_dashboard), and dismissing the Welcome panel sets show_welcome_panel. Because these are per-user rows, an administrator can preset them for other users with WP-CLI (shown below), and they travel with the user when the database is migrated.

Screen Options and Help

Screen Options is a per-screen panel. On list tables it offers the visible columns, the number of items per page and the view mode (compact or extended); on the classic editor and the Dashboard it lists the boxes that can be hidden. The number of items per page is stored as user meta named after the screen: edit_post_per_page for posts, edit_page_per_page for pages, edit_lp_book_per_page for the Lumen books list, edit_comments_per_page, users_per_page and so on. Values above 999 are rejected. Plugin screens add options with add_screen_option( 'per_page', ... ) and must allow saving them through the set-screen-option filter (or the screen-specific set_screen_option_{$option} filter).

Help opens contextual documentation for the current screen: tabs on the left, a sidebar with "For more information" links on the right. Core screens ship their own; plugins add tabs with WP_Screen::add_help_tab() once the screen is known (the current_screen action or the load-{page} hook). Neither tab exists on the block-based editors, which have their own Keyboard shortcuts and Welcome guide instead.

Admin colour schemes

The colour scheme styles the main navigation, the toolbar, buttons, links and notification bubbles. Each user picks one in Users > Profile > Administration Color Scheme; the choice is the admin_color user meta and applies only to that user, on every site of a network.

WordPress 7.0 refreshed the admin design and made a new scheme the default. Internally its key is modern; in the profile it is labelled Default. The scheme that was the default from 3.8 to 6.9 (key fresh) was relabelled Fresh. The 7.0 database upgrade (upgrade_700() in wp-admin/includes/upgrade.php) changed every user whose admin_color was fresh to modern, because WordPress cannot tell a user who picked the old default on purpose from one who never opened the profile; a user who wants the previous look selects Fresh again. A request to undo the migration in 7.0.1 was declined. The other schemes did not change:

Key (admin_color value) Label in the profile Notes

modern

Default

The default since 7.0 for new users, migrated users and any user whose stored value is empty

fresh

Fresh

The pre-7.0 default; its colours are built into the base admin stylesheet, so no extra file loads

light

Light

blue

Blue

coffee

Coffee

ectoplasm

Ectoplasm

midnight

Midnight

ocean

Ocean

sunrise

Sunrise

The picker lists Default, Fresh and Light first and then every other scheme, core or plugin, alphabetically by key. If a user’s stored value names a scheme that is no longer registered (a plugin was removed), the admin falls back to modern when rendering; the stale meta value stays in the database until the user saves the profile.

Plugins register extra schemes with wp_admin_css_color( $key, $name, $url, $colors, $icons ) on admin_init: $url is the stylesheet loaded instead of the default one, $colors are the swatches shown in the picker, and $icons the colours applied to the SVG menu icons. Core builds its own schemes from Sass partials shipped in wp-admin/css/colors/ (_admin.scss, _variables.scss, _mixins.scss, _tokens.scss), and a plugin can compile its scheme against the same partials, as the Lumen example below does, so that it covers every element the core schemes cover.

7.1 added design tokens and a ThemeProvider React component for plugin screens built with @wordpress/components, so React-based admin pages follow the user’s colours; see Components, DataViews and Admin Screens.

The Command Palette

The Command Palette is a search box that runs commands: go to a screen, open a post by title, add a new page, toggle an editor preference. It opens with Ctrl+K (Windows, Linux) or Cmd+K (macOS).

  • 6.3 introduced it in the Site Editor and the post editor.

  • 6.9 made it available on every admin screen. Core turns every menu entry the user can access into a command (labelled Section  Submenu, for example Books  Add Post), so plugin screens become searchable without extra code.

  • 7.0 added a button with the shortcut (⌘K or Ctrl+K) to the toolbar of admin screens, for users who do not know the shortcut.

Plugins register further commands in JavaScript with the @wordpress/commands package (useCommand(), useCommandLoader(), or wp.data.dispatch( 'core/commands' ).registerCommand()); see Data Layer and Editor Extensibility. Some browser extensions and password managers also claim Ctrl/Cmd+K; if the palette does not open, the toolbar button still works.

View Transitions

Since 7.0, moving between classic admin screens animates: the page cross-fades and the admin menu items keep their place instead of flashing, using the browser’s cross-document View Transitions API. Core does this with an inline stylesheet (wp-view-transitions-admin) containing @view-transition { navigation: auto; } and a transition name per top-level menu item. Two consequences:

  • The rules sit inside @media (prefers-reduced-motion: no-preference), so users who ask their operating system to reduce motion get no animation.

  • Browsers without cross-document view transitions simply load the next page as before. Nothing breaks.

A plugin screen that misbehaves during the transition (for example, a full-screen app that measures the viewport on load) can dequeue the style on its own screen with wp_dequeue_style( 'wp-view-transitions-admin' ) in an admin_enqueue_scripts callback with a priority above 10 (core enqueues the style at the default priority).

The toolbar in every editor (7.1)

Before 7.1 the post editor hid the toolbar in its default fullscreen mode, and the Site Editor never showed it; the "W" logo in the editor’s corner doubled as a back button. Since 7.1 the toolbar stays visible in the post editor and the Site Editor, as everywhere else in the admin, except in Distraction Free mode. In the editors, a chevron back button replaces the "W" logo as the way back to the previous screen; the logo always opens the About menu, and the site icon (when set) always opens the site menu. The post editor is also always iframed since 7.1, so admin CSS no longer leaks into the editing canvas.

For plugin authors this means toolbar nodes added through the admin_bar_menu action now appear in the Site Editor too. Nodes that make no sense there are skipped by checking get_current_screen(): its id is site-editor in the Site Editor, and $screen->is_block_editor() is true in any block editor. The Lumen plugin below does this.

The Show Toolbar when viewing site profile option only concerns the front end. Inside the admin the toolbar is always shown.

Profile settings that shape the admin

Users > Profile (profile.php, or user-edit.php?user_id=N for someone else) starts with personal options that only affect the current user. Each is a user meta row:

Option Meta key Default Effect

Visual Editor

rich_editing

true

false disables the visual mode of the classic editor and TinyMCE fields, and limits the block editor to its Code editor mode

Syntax Highlighting

syntax_highlighting

true

false disables CodeMirror in the file editors, Additional CSS and the Custom HTML widget

Administration Color Scheme

admin_color

modern

See [admin-colour-schemes]

Keyboard Shortcuts

comment_shortcuts

false

true enables the single-key moderation shortcuts on the Comments screen

Toolbar

show_admin_bar_front

true

false hides the toolbar on the front end for this user

Infinite Scrolling

infinite_scrolling

true

false restores the "Load more" button in the Media Library grid (7.1)

Language

locale

empty (site language)

The admin language for this user, chosen from installed language packs

The rest of the profile (name, nickname, display name, contact info, biographical info, profile picture from Gravatar, new password, Application Passwords, and Log Out Everywhere Else) is covered in Users, Roles and Profiles.

The Media Library opt-out has a history worth knowing: infinite scrolling was the grid’s behaviour until 5.8, which replaced it with a "Load more" button for accessibility; 7.1 made infinite scrolling the default again and added the per-user opt-out. The media_library_infinite_scrolling filter still overrides both.

Example: the Lumen Press admin tweaks

Lumen Press wants three things in its admin: a Dashboard widget showing the state of the book catalogue, an admin colour scheme in the publisher’s ink-and-amber colours, and a toolbar shortcut to the books list that stays out of the Site Editor. Editors should not see the WordPress Events and News widget.

These are site-specific choices rather than features, so they live in a must-use plugin: a PHP file in wp-content/mu-plugins/ that WordPress always loads, that cannot be deactivated from the Plugins screen and that loads before normal plugins. Files in subdirectories of mu-plugins are not loaded automatically, so the PHP file sits at the top level and its stylesheet in a folder next to it:

wp-content/mu-plugins/
├── lumen-admin.php
└── lumen-admin/
    ├── colors.min.css      (compiled, committed)
    └── colors.scss         (source)

The must-use plugin

The widget falls back to ordinary posts when the lumen-catalog plugin (which registers lp_book) is not active, so the file works on any site.

<?php
/**
 * Plugin Name:       Lumen Press admin tweaks
 * Description:       Catalogue dashboard widget, the Lumen admin colour scheme and toolbar rules for Lumen Press.
 * Version:           1.0.0
 * Requires at least: 7.0
 * Requires PHP:      7.4
 * License:           GPL-2.0-or-later
 * Text Domain:       lumen-admin
 */

defined( 'ABSPATH' ) || exit;

/*
 * 1. Dashboard: a "Lumen catalogue" widget, an At a Glance item, and a quieter
 *    dashboard for people who do not manage the site.
 */
add_action( 'wp_dashboard_setup', 'lumen_admin_dashboard_setup' );

function lumen_admin_dashboard_setup(): void {
	if ( current_user_can( 'edit_posts' ) ) {
		wp_add_dashboard_widget(
			'lumen_catalogue',
			__( 'Lumen catalogue', 'lumen-admin' ),
			'lumen_admin_render_catalogue_widget',
			'lumen_admin_control_catalogue_widget', // Shown only to users with edit_dashboard.
			null,
			'side',
			'high'
		);
	}

	if ( ! current_user_can( 'manage_options' ) ) {
		remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // WordPress Events and News.
	}
}

function lumen_admin_render_catalogue_widget(): void {
	$type   = post_type_exists( 'lp_book' ) ? 'lp_book' : 'post'; // lp_book comes from lumen-catalog.
	$counts = wp_count_posts( $type );
	$limit  = (int) get_option( 'lumen_admin_widget_limit', 5 );
	$queue  = get_posts(
		array(
			'post_type'   => $type,
			'post_status' => array( 'pending', 'draft' ),
			'numberposts' => $limit,
			'orderby'     => 'modified',
		)
	);

	printf(
		'<p>%s</p>',
		esc_html(
			sprintf(
				/* translators: 1: published, 2: pending, 3: drafts. */
				__( '%1$d published, %2$d pending review, %3$d drafts.', 'lumen-admin' ),
				$counts->publish,
				$counts->pending,
				$counts->draft
			)
		)
	);

	if ( ! $queue ) {
		echo '<p>' . esc_html__( 'Nothing is waiting for review.', 'lumen-admin' ) . '</p>';
		return;
	}

	echo '<ul>';
	foreach ( $queue as $item ) {
		printf(
			'<li><a href="%1$s">%2$s</a> (%3$s)</li>',
			esc_url( (string) get_edit_post_link( $item ) ),
			esc_html( get_the_title( $item ) ),
			esc_html( get_post_status_object( $item->post_status )->label )
		);
	}
	echo '</ul>';
}

function lumen_admin_control_catalogue_widget(): void {
	// Core has already checked the dashboard-widget-nonce before calling this on POST.
	if ( isset( $_POST['lumen_admin_widget_limit'] ) ) {
		$limit = min( 20, max( 1, absint( wp_unslash( $_POST['lumen_admin_widget_limit'] ) ) ) );
		update_option( 'lumen_admin_widget_limit', $limit, false );
	}

	printf(
		'<p><label for="lumen_admin_widget_limit">%1$s</label> <input type="number" min="1" max="20" id="lumen_admin_widget_limit" name="lumen_admin_widget_limit" value="%2$d" class="small-text" /></p>',
		esc_html__( 'Entries to list', 'lumen-admin' ),
		(int) get_option( 'lumen_admin_widget_limit', 5 )
	);
}

add_filter( 'dashboard_glance_items', 'lumen_admin_glance_items' );

function lumen_admin_glance_items( array $items ): array {
	if ( ! post_type_exists( 'lp_book' ) ) {
		return $items;
	}

	$published = (int) wp_count_posts( 'lp_book' )->publish;
	$items[]   = sprintf(
		'<a class="lumen-books-count" href="%1$s">%2$s</a>',
		esc_url( admin_url( 'edit.php?post_type=lp_book' ) ),
		esc_html(
			/* translators: %s: number of published books. */
			sprintf( _n( '%s Book', '%s Books', $published, 'lumen-admin' ), number_format_i18n( $published ) )
		)
	);

	return $items;
}

/*
 * 2. The "Lumen" admin colour scheme, offered in Users > Profile next to the core ones.
 */
add_action( 'admin_init', 'lumen_admin_register_color_scheme' );

function lumen_admin_register_color_scheme(): void {
	wp_admin_css_color(
		'lumen',
		__( 'Lumen', 'lumen-admin' ),
		plugins_url( 'lumen-admin/colors.min.css', __FILE__ ),
		array( '#1f2a44', '#2b3a5c', '#d98e04', '#c2410c' ),
		array(
			'base'    => '#e8ebf2',
			'focus'   => '#fff',
			'current' => '#fff',
		)
	);
}

/*
 * 3. Toolbar: a "Catalogue" shortcut, hidden in the Site Editor where it is not useful.
 */
add_action( 'admin_bar_menu', 'lumen_admin_toolbar_node', 100 );

function lumen_admin_toolbar_node( WP_Admin_Bar $wp_admin_bar ): void {
	if ( ! current_user_can( 'edit_posts' ) || ! post_type_exists( 'lp_book' ) ) {
		return;
	}

	$screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null;
	if ( $screen && 'site-editor' === $screen->id ) {
		return;
	}

	$wp_admin_bar->add_node(
		array(
			'id'     => 'lumen-catalogue',
			'title'  => __( 'Catalogue', 'lumen-admin' ),
			'href'   => admin_url( 'edit.php?post_type=lp_book' ),
			'parent' => 'top-secondary',
		)
	);
}

Points that matter in this code:

  • wp_add_dashboard_widget() accepts a context (normal, side, column3, column4) and a priority (high, core, default, low) since 5.6. They only set the initial position; once a user drags widgets, their meta-box-order_dashboard meta wins.

  • The control callback turns on a Configure link in the widget header, and only for users with the edit_dashboard capability (Administrators). When the form is posted, core verifies the edit-dashboard-widget_{id} nonce before calling the callback, so the callback only validates and saves. The saved value is a site option, shared by every user; per-user settings would go to user meta.

  • Removing a core widget is remove_meta_box( $id, 'dashboard', $context ) on wp_dashboard_setup; the context must match the one the widget was added with (side for Quick Draft and Events and News, normal for the others).

  • All output is escaped (esc_html(), esc_url()), including titles read from the database: dashboard widgets are a common place for stored cross-site scripting when post titles or remote data are echoed raw. See Security for Developers.

  • plugins_url() recognises files inside WPMU_PLUGIN_DIR and returns a /wp-content/mu-plugins/ URL.

The colour scheme stylesheet

The stylesheet is compiled with Dart Sass against the partials that WordPress ships in wp-admin/css/colors/, the same way core builds modern, blue and the others:

// Lumen admin colour scheme, compiled against the core Sass partials of WordPress 7.1.
@use "sass:color";

$lumen-ink: #1f2a44;
$lumen-amber: #d98e04;

@use "admin" with (
	$scheme-name: "lumen",
	$base-color: $lumen-ink,
	$highlight-color: $lumen-amber,
	$notification-color: #c2410c,
	$link: #8a5a00,
	$link-focus: color.adjust(#8a5a00, $lightness: -10%)
);
# Run from wp-content/mu-plugins/lumen-admin; WP_PATH points at a WordPress 7.1 install.
npx sass@1.99.0 --no-source-map --style=compressed \
  --load-path="$WP_PATH/wp-admin/css/colors" \
  colors.scss colors.min.css

The result is about 22 KB minified. Compile against the partials of the WordPress version the site runs and recompile after major updates: the partials change when core restyles the admin (they did in 7.0), and a scheme compiled against older partials leaves the new elements in default colours. Choose the link colour for contrast against the light grey work area (#f0f0f0); amber links on grey fail WCAG contrast, which is why the example uses a darker #8a5a00 for links than for the menu highlight. Colour contrast is covered in Accessibility.

Checking the result

With the plugin in place, a short script run through wp eval-file builds the Dashboard as a given user would see it and lists the widgets. It needs the admin includes and a current screen, which a normal WP-CLI command does not set up:

<?php
// dashboard-widgets.php: list the Dashboard widgets the --user would see.
require_once ABSPATH . 'wp-admin/includes/admin.php';
set_current_screen( 'dashboard' );
require_once ABSPATH . 'wp-admin/includes/dashboard.php';
wp_dashboard_setup();
foreach ( $GLOBALS['wp_meta_boxes']['dashboard'] as $context => $priorities ) {
	foreach ( $priorities as $priority => $boxes ) {
		foreach ( array_filter( $boxes ) as $id => $box ) {
			printf( "%-8s %-5s %-24s %s\n", $context, $priority, $id, wp_strip_all_tags( $box['title'] ) );
		}
	}
}
wp eval-file dashboard-widgets.php --user=admin
wp eval-file dashboard-widgets.php --user=maria.editor
normal   core  dashboard_site_health    Site Health Status
normal   core  dashboard_right_now      At a Glance
normal   core  dashboard_activity       Activity
side     core  dashboard_quick_press    Quick Draft Your Recent Drafts
side     core  dashboard_primary        WordPress Events and News
side     high  lumen_catalogue          Lumen catalogue Configure
normal   core  dashboard_right_now      At a Glance
normal   core  dashboard_activity       Activity
side     core  dashboard_quick_press    Quick Draft Your Recent Drafts
side     high  lumen_catalogue          Lumen catalogue

The first listing is the Administrator admin, the second the Editor maria.editor (Maria Ortega). The Editor gets no Site Health widget (core shows it only with view_site_health_checks), no Events and News (removed by the plugin) and no Configure link (edit_dashboard). "Quick Draft Your Recent Drafts" is one title with two spans, one shown with JavaScript and one without. In the browser, At a Glance shows "1 Book" next to the post and page counts, the toolbar shows the Catalogue node on admin screens and in the post editor but not in the Site Editor.

Managing admin preferences with WP-CLI

Admin preferences are user meta, so wp user meta reads and writes them for any user without logging in as that user. Listing a user’s preferences:

wp user meta list admin \
  --keys=admin_color,show_admin_bar_front,infinite_scrolling,rich_editing,syntax_highlighting,comment_shortcuts,locale,show_welcome_panel \
  --format=table
user_id	meta_key	meta_value
1	rich_editing	true
1	syntax_highlighting	true
1	infinite_scrolling	true
1	comment_shortcuts	false
1	admin_color	modern
1	show_admin_bar_front	true
1	locale
1	show_welcome_panel	1

These are the values of a freshly installed 7.1 site: every new user gets the modern scheme.

Setting the Lumen scheme for one user, then for every Editor, returning one user to the default by deleting the meta row, and setting a scheme through wp user update, which goes through wp_update_user() and strips characters that are not allowed in a scheme key:

wp user meta update maria.editor admin_color lumen
for id in $(wp user list --role=editor --field=ID); do
  wp user meta update "$id" admin_color lumen
done
wp user meta delete tom.author admin_color
wp user update maria.editor --admin_color=fresh

The registered schemes exist only during an admin request (they are registered on admin_init), so a wp user meta update with a misspelled key succeeds and the user silently gets the default scheme.

Presetting the Dashboard and list screens for a user (hide two widgets, hide the Welcome panel, show 50 books per page, hide the toolbar on the front end):

wp user meta update admin metaboxhidden_dashboard '["dashboard_primary","dashboard_quick_press"]' --format=json
wp user meta update admin show_welcome_panel 0
wp user meta update admin edit_lp_book_per_page 50
wp user meta update admin show_admin_bar_front false

--format=json makes WP-CLI store a PHP array (serialised), which is what core expects for metaboxhidden_dashboard; without it the value would be stored as a plain string, which core does not read as a list of widget IDs. After these commands the Dashboard renders the two widgets with the hide-if-js class and their Screen Options boxes unticked, and the Screen Options of Books > Books shows 50 items per page.

Common problems

Symptom Cause and fix

The admin turned blue-black after updating to 7.0, and the old colours are missing

The 7.0 upgrade moved users from fresh to modern. Pick Fresh in the profile, or run wp user meta update <user> admin_color fresh for the users who want it.

A user’s admin shows the default scheme although another one was chosen

The stored admin_color names a scheme whose plugin is no longer active; the admin falls back to modern. Reactivate the plugin or set a core scheme.

A custom scheme leaves some controls in the default blue

The stylesheet was compiled against older Sass partials, or hand-written. Recompile against the wp-admin/css/colors/ partials of the running version.

A plugin’s toolbar item looks broken in the Site Editor after updating to 7.1

The toolbar is now persistent there. Skip the node when get_current_screen() returns site-editor, or style it for the editor.

Site Health Status shows "Results are still loading" or old results

The widget shows the weekly scheduled check. Open Tools > Site Health to run it now; if WP-Cron does not run, see WP-Cron and Scheduled Tasks.

A widget removed with remove_meta_box() still appears

The call ran before wp_dashboard_setup, or with the wrong context. Hook wp_dashboard_setup and use side for dashboard_quick_press and dashboard_primary.

What older books and tutorials get wrong

The older books on WordPress describe the admin of 6.2 to 6.6. The structure (toolbar, navigation, work area, Screen Options, Help) is still valid; these details are not:

Older claim Current behaviour

The default colour scheme is the dark grey and blue "Default"

Since 7.0 "Default" is the new Modern scheme (modern); the old one is called Fresh, and existing users were migrated.

The Command Palette is a block editor and Site Editor feature

It works on every admin screen since 6.9 and has a toolbar button since 7.0.

The editors hide the toolbar, and the W logo returns to the Dashboard

Since 7.1 the toolbar is visible in every editor except Distraction Free mode, and a chevron button goes back.

Fonts are managed inside the Site Editor only, for block themes

Appearance > Fonts is a standalone page for every theme since 7.0.

Tools offers Press This

Press This left core in 4.9 and is a separate plugin; Available Tools lists only the Categories and Tags Converter.

Theme design starts in Appearance > Customize

With a block theme the Customizer is hidden; Appearance > Editor (the Site Editor) and Styles replace it. See Site Editor and Global Styles.

The Media Library loads more items with a button

Infinite scrolling is the default again since 7.1, with a per-user opt-out in the profile.

The full list of corrections is in Where Older Books and Tutorials Are Outdated. The settings screens under Settings are described one by one in Settings Screens, and adding menu pages and settings from a plugin in Administration Menus and Settings API.