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 |
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-stylesor has atheme.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_EDITremoves both file editors;DISALLOW_FILE_MODSalso 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 |
|---|---|---|---|
|
Site Health Status |
Users with |
The result of the last weekly Site Health check (stored in the |
|
At a Glance |
Users with |
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 |
|
Activity |
Everyone on a single site |
Scheduled posts ("Publishing Soon"), "Recently Published" posts and recent comments with moderation links. |
|
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. |
|
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 |
|
PHP Update Required / Recommended; Your browser is out of date! |
Only when WordPress.org reports the PHP version (to users with |
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 |
|---|---|---|
|
Default |
The default since 7.0 for new users, migrated users and any user whose stored value is empty |
|
Fresh |
The pre-7.0 default; its colours are built into the base admin stylesheet, so no extra file loads |
|
Light |
|
|
Blue |
|
|
Coffee |
|
|
Ectoplasm |
|
|
Midnight |
|
|
Ocean |
|
|
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 , for example ), so plugin screens become searchable without extra code.
-
7.0 added a button with the shortcut (
⌘KorCtrl+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 |
|
|
|
Syntax Highlighting |
|
|
|
Administration Color Scheme |
|
|
|
Keyboard Shortcuts |
|
|
|
Toolbar |
|
|
|
Infinite Scrolling |
|
|
|
Language |
|
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, theirmeta-box-order_dashboardmeta wins. -
The control callback turns on a Configure link in the widget header, and only for users with the
edit_dashboardcapability (Administrators). When the form is posted, core verifies theedit-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 )onwp_dashboard_setup; the context must match the one the widget was added with (sidefor Quick Draft and Events and News,normalfor 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 insideWPMU_PLUGIN_DIRand 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'] ) );
}
}
}
Source: WP-CLI Commands: wp eval-file
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
Source: WP-CLI Commands: wp user meta
--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 |
A user’s admin shows the default scheme although another one was chosen |
The stored |
A custom scheme leaves some controls in the default blue |
The stylesheet was compiled against older Sass partials, or hand-written. Recompile against the
|
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 |
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 |
The call ran before |
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 ( |
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.