diff --git a/src/wp-admin/css/admin-menu.css b/src/wp-admin/css/admin-menu.css index 2bb6a7df7d821..dd6bd9c46f4b0 100644 --- a/src/wp-admin/css/admin-menu.css +++ b/src/wp-admin/css/admin-menu.css @@ -280,6 +280,19 @@ background-size: 20px auto; } +#adminmenu div.wp-menu-image.svg-icon { + display: flex; + align-items: center; + justify-content: center; +} + +#adminmenu div.wp-menu-image.svg-icon svg { + width: 24px; + height: 24px; + fill: currentColor; + transition: color 0.1s ease-in-out; +} + div.wp-menu-image::before { color: #a7aaad; color: rgba(240, 246, 252, 0.6); @@ -287,24 +300,35 @@ div.wp-menu-image::before { transition: all 0.1s ease-in-out; } -#adminmenu div.wp-menu-image::before { +#adminmenu div.wp-menu-image::before, +#adminmenu div.wp-menu-image.svg-icon svg { color: #a7aaad; color: rgba(240, 246, 252, 0.6); } #adminmenu li.wp-has-current-submenu:hover div.wp-menu-image::before, +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image.svg-icon svg, #adminmenu .wp-has-current-submenu div.wp-menu-image::before, +#adminmenu .wp-has-current-submenu div.wp-menu-image.svg-icon svg, #adminmenu .current div.wp-menu-image::before, +#adminmenu .current div.wp-menu-image.svg-icon svg, #adminmenu a.wp-has-current-submenu:hover div.wp-menu-image::before, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image.svg-icon svg, #adminmenu a.current:hover div.wp-menu-image::before, +#adminmenu a.current:hover div.wp-menu-image.svg-icon svg, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image::before, -#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image::before { +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image.svg-icon svg, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image::before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image.svg-icon svg { color: #fff; } #adminmenu li:hover div.wp-menu-image::before, +#adminmenu li:hover div.wp-menu-image.svg-icon svg, #adminmenu li a:focus div.wp-menu-image::before, -#adminmenu li.opensub div.wp-menu-image::before { +#adminmenu li a:focus div.wp-menu-image.svg-icon svg, +#adminmenu li.opensub div.wp-menu-image::before, +#adminmenu li.opensub div.wp-menu-image.svg-icon svg { color: #72aee6; } @@ -315,6 +339,10 @@ div.wp-menu-image::before { z-index: 25; } +.folded #adminmenu div.wp-menu-image.svg-icon { + height: 34px; +} + .folded #adminmenu a.menu-top { height: 34px; } @@ -492,35 +520,34 @@ ul#adminmenu > li.current > a.current::after { #collapse-button .collapse-button-icon { width: 36px; height: 34px; + display: flex; + align-items: center; + justify-content: center; } .folded #collapse-button .collapse-button-label { display: none; } -#collapse-button .collapse-button-icon::after { - content: "\f148"; - content: "\f148" / ""; - display: block; +#collapse-button .collapse-button-icon svg { + width: 24px; + height: 24px; + fill: currentColor; position: relative; - top: 7px; - text-align: center; - font: 400 20px/1 dashicons !important; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + top: -1px; } /* rtl:ignore */ -.folded #collapse-button .collapse-button-icon::after, -.rtl #collapse-button .collapse-button-icon::after { +.folded #collapse-button .collapse-button-icon svg, +.rtl #collapse-button .collapse-button-icon svg { transform: rotate(180deg); } -.rtl.folded #collapse-button .collapse-button-icon::after { +.rtl.folded #collapse-button .collapse-button-icon svg { transform: none; } -#collapse-button .collapse-button-icon::after, +#collapse-button .collapse-button-icon svg, #collapse-button .collapse-button-label { transition: all 0.1s ease-in-out; } @@ -600,6 +627,10 @@ li#wp-admin-bar-menu-toggle { z-index: 25; } + .auto-fold #adminmenu div.wp-menu-image.svg-icon { + height: 34px; + } + .auto-fold #adminmenu a.menu-top { min-height: 34px; } @@ -641,11 +672,11 @@ li#wp-admin-bar-menu-toggle { } /* rtl:ignore */ - .auto-fold #collapse-button .collapse-button-icon::after { + .auto-fold #collapse-button .collapse-button-icon svg { transform: rotate(180deg); } - .rtl.auto-fold #collapse-button .collapse-button-icon::after { + .rtl.auto-fold #collapse-button .collapse-button-icon svg { transform: none; } @@ -805,26 +836,25 @@ li#wp-admin-bar-menu-toggle { border: 1px solid transparent; } - #wpadminbar #wp-admin-bar-menu-toggle .ab-icon::before { - content: "\f228"; - display: inline-block; + #wpadminbar #wp-admin-bar-menu-toggle .ab-icon { + display: flex; + align-items: center; + justify-content: center; float: left; - font: 400 40px/45px dashicons; - vertical-align: middle; - outline: none; margin: 0; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; height: 44px; width: 50px; padding: 0; border: none; - text-align: center; - text-decoration: none; box-sizing: border-box; } - .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon::before { + #wpadminbar #wp-admin-bar-menu-toggle .ab-icon svg { + width: 36px; + height: 36px; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon { color: #72aee6; } } diff --git a/src/wp-admin/css/colors/_admin.scss b/src/wp-admin/css/colors/_admin.scss index 366f1b86b4f16..6587020d37f7b 100644 --- a/src/wp-admin/css/colors/_admin.scss +++ b/src/wp-admin/css/colors/_admin.scss @@ -261,7 +261,8 @@ input[type="radio"]:focus { color: variables.$menu-text; } -#adminmenu div.wp-menu-image:before { +#adminmenu div.wp-menu-image:before, +#adminmenu div.wp-menu-image.svg-icon svg { color: variables.$menu-icon; } @@ -274,7 +275,9 @@ input[type="radio"]:focus { } #adminmenu li.menu-top:hover div.wp-menu-image:before, -#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { +#adminmenu li.menu-top:hover div.wp-menu-image.svg-icon svg, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image.svg-icon svg { color: variables.$menu-highlight-icon; } @@ -345,13 +348,21 @@ ul#adminmenu > li.current > a.current:after { } #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu div.wp-menu-image.svg-icon svg, #adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image.svg-icon svg, #adminmenu li.current div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image.svg-icon svg, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image.svg-icon svg, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image.svg-icon svg, #adminmenu li:hover div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image.svg-icon svg, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li a:focus div.wp-menu-image.svg-icon svg, +#adminmenu li.opensub div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image.svg-icon svg { color: variables.$menu-current-icon; } @@ -422,6 +433,7 @@ ul#adminmenu > li.current > a.current:after { color: variables.$menu-submenu-focus-text; } +#wpadminbar:not(.mobile) li:hover .ab-icon, #wpadminbar:not(.mobile) li:hover .ab-icon:before, #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, @@ -462,11 +474,15 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar .quicklinks .menupop.hover ul li a:focus, #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, #wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon, #wpadminbar li:hover .ab-icon:before, #wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon, #wpadminbar li a:focus .ab-icon:before, #wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon, #wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon, #wpadminbar li.hover .ab-icon:before, #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, @@ -478,11 +494,13 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar .quicklinks li a:focus .blavatar, #wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, #wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .hover .ab-icon, #wpadminbar.mobile .quicklinks .hover .ab-icon:before, #wpadminbar.mobile .quicklinks .hover .ab-item:before { color: variables.$menu-submenu-focus-text; } +#wpadminbar.mobile .quicklinks .ab-icon, #wpadminbar.mobile .quicklinks .ab-icon:before, #wpadminbar.mobile .quicklinks .ab-item:before { color: variables.$menu-icon; diff --git a/src/wp-admin/menu-header.php b/src/wp-admin/menu-header.php index 5cced0ceaed96..05ea7e89fc8c7 100644 --- a/src/wp-admin/menu-header.php +++ b/src/wp-admin/menu-header.php @@ -125,7 +125,8 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) { * If the string 'none' (previously 'div') is passed instead of a URL, don't output * the default menu image so an icon can be added to div.wp-menu-image as background * with CSS. Dashicons and base64-encoded data:image/svg_xml URIs are also handled - * as special cases. + * as special cases. Any other value is looked up as a registered icon name and, if + * found, rendered as inline SVG; otherwise it is treated as an image URL. */ if ( ! empty( $item[6] ) ) { $img = ''; @@ -140,6 +141,12 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) { } elseif ( str_starts_with( $item[6], 'dashicons-' ) ) { $img = '
'; $img_class = ' dashicons-before ' . sanitize_html_class( $item[6] ); + } else { + $icon = wp_get_icon( $item[6] ); + if ( '' !== $icon ) { + $img = $icon; + $img_class = ' svg-icon'; + } } } @@ -283,7 +290,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) { echo '
  • ' . '
  • '; } diff --git a/src/wp-admin/menu.php b/src/wp-admin/menu.php index 2a3430ebc3df8..ab7e61758a349 100644 --- a/src/wp-admin/menu.php +++ b/src/wp-admin/menu.php @@ -26,7 +26,7 @@ * @global array $menu */ -$menu[2] = array( __( 'Dashboard' ), 'read', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'dashicons-dashboard' ); +$menu[2] = array( __( 'Dashboard' ), 'read', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'core/dashboard' ); $submenu['index.php'][0] = array( __( 'Home' ), 'read', 'index.php' ); @@ -70,7 +70,7 @@ // $menu[5] = Posts. -$menu[10] = array( __( 'Media' ), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'dashicons-admin-media' ); +$menu[10] = array( __( 'Media' ), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'core/media' ); $submenu['upload.php'][5] = array( _x( 'Library', 'media library menu item' ), 'upload_files', 'upload.php' ); $submenu['upload.php'][10] = array( __( 'Add Media File' ), 'upload_files', 'media-new.php' ); @@ -86,7 +86,7 @@ unset( $taxonomy, $submenu_index ); -$menu[15] = array( __( 'Links' ), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'dashicons-admin-links' ); +$menu[15] = array( __( 'Links' ), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'core/link' ); $submenu['link-manager.php'][5] = array( _x( 'All Links', 'admin menu' ), 'manage_links', 'link-manager.php' ); $submenu['link-manager.php'][10] = array( __( 'Add Link' ), 'manage_links', 'link-add.php' ); @@ -110,7 +110,7 @@ '', 'menu-top menu-icon-comments', 'menu-comments', - 'dashicons-admin-comments', + 'core/comment', ); unset( $awaiting_moderation ); @@ -142,19 +142,18 @@ : ++$_wp_last_object_menu; // If we're to use $_wp_last_object_menu, increment it first. $post_type_for_id = sanitize_html_class( $post_type ); - $menu_icon = 'dashicons-admin-post'; + $menu_icon = 'core/pin'; if ( is_string( $post_type_obj->menu_icon ) ) { - // Special handling for an empty div.wp-menu-image, data:image/svg+xml, and Dashicons. + // Special handling for an empty div.wp-menu-image, data:image/svg+xml, Dashicons, and registered icons. if ( 'none' === $post_type_obj->menu_icon || 'div' === $post_type_obj->menu_icon || str_starts_with( $post_type_obj->menu_icon, 'data:image/svg+xml;base64,' ) || str_starts_with( $post_type_obj->menu_icon, 'dashicons-' ) + || WP_Icons_Registry::get_instance()->is_registered( $post_type_obj->menu_icon ) ) { $menu_icon = $post_type_obj->menu_icon; } else { $menu_icon = esc_url( $post_type_obj->menu_icon ); } - } elseif ( in_array( $post_type, $builtin, true ) ) { - $menu_icon = 'dashicons-admin-' . $post_type; } $menu_class = 'menu-top menu-icon-' . $post_type_for_id; @@ -206,7 +205,7 @@ $appearance_capability = current_user_can( 'switch_themes' ) ? 'switch_themes' : 'edit_theme_options'; -$menu[60] = array( __( 'Appearance' ), $appearance_capability, 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'dashicons-admin-appearance' ); +$menu[60] = array( __( 'Appearance' ), $appearance_capability, 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'core/brush' ); $count = ''; if ( ! is_multisite() && current_user_can( 'update_themes' ) ) { @@ -320,7 +319,7 @@ function _add_plugin_file_editor_to_tools() { } /* translators: %s: Number of available plugin updates. */ -$menu[65] = array( sprintf( __( 'Plugins %s' ), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'dashicons-admin-plugins' ); +$menu[65] = array( sprintf( __( 'Plugins %s' ), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'core/plugins' ); $submenu['plugins.php'][5] = array( __( 'Installed Plugins' ), 'activate_plugins', 'plugins.php' ); @@ -337,9 +336,9 @@ function _add_plugin_file_editor_to_tools() { unset( $update_data ); if ( current_user_can( 'list_users' ) ) { - $menu[70] = array( __( 'Users' ), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' ); + $menu[70] = array( __( 'Users' ), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'core/people' ); } else { - $menu[70] = array( __( 'Profile' ), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' ); + $menu[70] = array( __( 'Profile' ), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'core/people' ); } if ( current_user_can( 'list_users' ) ) { @@ -387,7 +386,7 @@ function _add_plugin_file_editor_to_tools() { ); } -$menu[75] = array( __( 'Tools' ), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'dashicons-admin-tools' ); +$menu[75] = array( __( 'Tools' ), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'core/tool' ); $submenu['tools.php'][5] = array( __( 'Available Tools' ), 'edit_posts', 'tools.php' ); $submenu['tools.php'][10] = array( __( 'Import' ), 'import', 'import.php' ); $submenu['tools.php'][15] = array( __( 'Export' ), 'export', 'export.php' ); @@ -402,7 +401,7 @@ function _add_plugin_file_editor_to_tools() { $submenu['tools.php'][50] = array( __( 'Network Setup' ), 'setup_network', 'network.php' ); } -$menu[80] = array( __( 'Settings' ), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'dashicons-admin-settings' ); +$menu[80] = array( __( 'Settings' ), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'core/settings' ); $submenu['options-general.php'][10] = array( _x( 'General', 'settings screen' ), 'manage_options', 'options-general.php' ); $submenu['options-general.php'][12] = array( __( 'Connectors' ), 'manage_options', 'options-connectors.php' ); $submenu['options-general.php'][15] = array( __( 'Writing' ), 'manage_options', 'options-writing.php' ); diff --git a/src/wp-admin/network/menu.php b/src/wp-admin/network/menu.php index e74dc93452a2a..6937e94d8dec3 100644 --- a/src/wp-admin/network/menu.php +++ b/src/wp-admin/network/menu.php @@ -13,7 +13,7 @@ } /* translators: Network menu item. */ -$menu[2] = array( __( 'Dashboard' ), 'manage_network', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'dashicons-dashboard' ); +$menu[2] = array( __( 'Dashboard' ), 'manage_network', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'core/dashboard' ); $submenu['index.php'][0] = array( __( 'Home' ), 'read', 'index.php' ); @@ -53,11 +53,11 @@ $menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' ); /* translators: Sites menu item. */ -$menu[5] = array( __( 'Sites' ), 'manage_sites', 'sites.php', '', 'menu-top menu-icon-site', 'menu-site', 'dashicons-admin-multisite' ); +$menu[5] = array( __( 'Sites' ), 'manage_sites', 'sites.php', '', 'menu-top menu-icon-site', 'menu-site', 'core/sites' ); $submenu['sites.php'][5] = array( __( 'All Sites' ), 'manage_sites', 'sites.php' ); $submenu['sites.php'][10] = array( __( 'Add Site' ), 'create_sites', 'site-new.php' ); -$menu[10] = array( __( 'Users' ), 'manage_network_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' ); +$menu[10] = array( __( 'Users' ), 'manage_network_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'core/people' ); $submenu['users.php'][5] = array( __( 'All Users' ), 'manage_network_users', 'users.php' ); $submenu['users.php'][10] = array( __( 'Add User' ), 'create_users', 'user-new.php' ); @@ -77,10 +77,10 @@ '', 'menu-top menu-icon-appearance', 'menu-appearance', - 'dashicons-admin-appearance', + 'core/brush', ); } else { - $menu[15] = array( __( 'Themes' ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'dashicons-admin-appearance' ); + $menu[15] = array( __( 'Themes' ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'core/brush' ); } $submenu['themes.php'][5] = array( __( 'Installed Themes' ), 'manage_network_themes', 'themes.php' ); $submenu['themes.php'][10] = array( __( 'Add Theme' ), 'install_themes', 'theme-install.php' ); @@ -102,16 +102,16 @@ '', 'menu-top menu-icon-plugins', 'menu-plugins', - 'dashicons-admin-plugins', + 'core/plugins', ); } else { - $menu[20] = array( __( 'Plugins' ), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'dashicons-admin-plugins' ); + $menu[20] = array( __( 'Plugins' ), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'core/plugins' ); } $submenu['plugins.php'][5] = array( __( 'Installed Plugins' ), 'manage_network_plugins', 'plugins.php' ); $submenu['plugins.php'][10] = array( __( 'Add Plugin' ), 'install_plugins', 'plugin-install.php' ); $submenu['plugins.php'][15] = array( __( 'Plugin File Editor' ), 'edit_plugins', 'plugin-editor.php' ); -$menu[25] = array( __( 'Settings' ), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'dashicons-admin-settings' ); +$menu[25] = array( __( 'Settings' ), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'core/settings' ); if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) { $submenu['settings.php'][5] = array( __( 'Network Settings' ), 'manage_network_options', 'settings.php' ); $submenu['settings.php'][10] = array( __( 'Network Setup' ), 'setup_network', 'setup.php' ); diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php index 5ba568792209c..8b803b5c2d5de 100644 --- a/src/wp-includes/admin-bar.php +++ b/src/wp-includes/admin-bar.php @@ -115,6 +115,20 @@ function wp_admin_bar_render() { $rendered = true; } +/** + * Returns inline SVG markup wrapped for use as an admin bar node icon. + * + * @since 7.1.0 + * @access private + * + * @param string $icon_name Namespaced core icon name, e.g. 'core/wordpress'. + * @return string Admin bar icon markup. + */ +function _wp_admin_bar_icon( $icon_name ) { + $svg = wp_get_icon( $icon_name ); + return ''; +} + /** * Adds the WordPress logo menu. * @@ -136,7 +150,7 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) { $wp_logo_menu_args = array( 'id' => 'wp-logo', - 'title' => '' . + 'title' => _wp_admin_bar_icon( 'core/wordpress' ) . '' . /* translators: Hidden accessibility text. */ __( 'About WordPress' ) . '', @@ -242,7 +256,7 @@ function wp_admin_bar_sidebar_toggle( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'menu-toggle', - 'title' => '' . + 'title' => _wp_admin_bar_icon( 'core/menu' ) . '' . /* translators: Hidden accessibility text. */ __( 'Menu' ) . '', @@ -281,7 +295,7 @@ function wp_admin_bar_my_account_item( $wp_admin_bar ) { array( 'id' => 'my-account', 'parent' => 'top-secondary', - 'title' => $howdy . $avatar, + 'title' => $howdy . ( empty( $avatar ) ? _wp_admin_bar_icon( 'core/people' ) : $avatar ), 'href' => $profile_url, 'meta' => array( 'class' => empty( $avatar ) ? '' : 'with-avatar', @@ -384,10 +398,11 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) { $blogname = sprintf( __( 'User Dashboard: %s' ), esc_html( get_network()->site_name ) ); } - $title = wp_html_excerpt( $blogname, 40, '…' ); - $meta = array( + $title = wp_html_excerpt( $blogname, 40, '…' ); + $meta = array( 'menu_title' => $title, ); + $has_site_icon = false; if ( ! is_network_admin() && ! is_user_admin() ) { /** This filter is documented in wp-includes/admin-bar.php */ @@ -405,9 +420,14 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) { $title = $site_icon . $title; $meta['class'] = 'has-site-icon'; + $has_site_icon = true; } } + if ( ! $has_site_icon ) { + $title = _wp_admin_bar_icon( ( is_admin() || ! current_user_can( 'read' ) ) ? 'core/home' : 'core/dashboard' ) . $title; + } + $wp_admin_bar->add_node( array( 'id' => 'site-name', @@ -495,7 +515,7 @@ function wp_admin_bar_edit_site_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'site-editor', - 'title' => __( 'Edit Site' ), + 'title' => _wp_admin_bar_icon( 'core/brush' ) . __( 'Edit Site' ), 'href' => add_query_arg( array( 'postType' => 'wp_template', @@ -550,7 +570,7 @@ function wp_admin_bar_customize_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'customize', - 'title' => __( 'Customize' ), + 'title' => _wp_admin_bar_icon( 'core/brush' ) . __( 'Customize' ), 'href' => $customize_url, 'meta' => array( 'class' => 'hide-if-no-customize', @@ -587,7 +607,7 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'my-sites', - 'title' => __( 'My Sites' ), + 'title' => _wp_admin_bar_icon( 'core/sites' ) . __( 'My Sites' ), 'href' => $my_sites_url, ) ); @@ -708,7 +728,7 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) { ( wp_lazy_loading_enabled( 'img', 'site_icon_in_toolbar' ) ? ' loading="lazy"' : '' ) ); } else { - $blavatar = '
    '; + $blavatar = '
    ' . wp_get_icon( 'core/wordpress', array( 'size' => 16 ) ) . '
    '; } $blogname = $blog->blogname; @@ -922,7 +942,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'edit', - 'title' => $post_type_object->labels->edit_item, + 'title' => _wp_admin_bar_icon( 'core/pencil' ) . $post_type_object->labels->edit_item, 'href' => $edit_post_link, ) ); @@ -934,7 +954,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'edit', - 'title' => $tax->labels->edit_item, + 'title' => _wp_admin_bar_icon( 'core/pencil' ) . $tax->labels->edit_item, 'href' => $edit_term_link, ) ); @@ -945,7 +965,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'edit', - 'title' => __( 'Edit User' ), + 'title' => _wp_admin_bar_icon( 'core/pencil' ) . __( 'Edit User' ), 'href' => $edit_user_link, ) ); @@ -976,8 +996,8 @@ function wp_admin_bar_command_palette_menu( WP_Admin_Bar $wp_admin_bar ): void { $apple_pattern = 'Macintosh|Mac OS X|Mac_PowerPC'; $is_apple_os = (bool) preg_match( "/{$apple_pattern}/i", $_SERVER['HTTP_USER_AGENT'] ?? '' ); $shortcut_label = $is_apple_os ? $shortcut_labels['appleOS'] : $shortcut_labels['default']; - $title = sprintf( - '%s %s', + $title = _wp_admin_bar_icon( 'core/search' ) . sprintf( + '%s %s', $shortcut_label, /* translators: Hidden accessibility text. */ __( 'Open command palette' ), @@ -1074,7 +1094,7 @@ function wp_admin_bar_new_content_menu( $wp_admin_bar ) { return; } - $title = '' . _x( 'New', 'admin bar menu group label' ) . ''; + $title = _wp_admin_bar_icon( 'core/plus' ) . '' . _x( 'New', 'admin bar menu group label' ) . ''; $wp_admin_bar->add_node( array( @@ -1132,7 +1152,7 @@ function wp_admin_bar_comments_menu( $wp_admin_bar ) { number_format_i18n( $awaiting_mod ) ); - $icon = ''; + $icon = _wp_admin_bar_icon( 'core/comment' ); $title = ''; $title .= '' . $awaiting_text . ''; @@ -1247,7 +1267,7 @@ function wp_admin_bar_updates_menu( $wp_admin_bar ) { number_format_i18n( $update_data['counts']['total'] ) ); - $icon = ''; + $icon = _wp_admin_bar_icon( 'core/update' ); $title = ''; $title .= '' . $updates_text . ''; @@ -1273,6 +1293,7 @@ function wp_admin_bar_search_menu( $wp_admin_bar ) { } $form = '
    '; + $form .= _wp_admin_bar_icon( 'core/search' ); $form .= ''; $form .= '