Skip to content

Commit 8eb6461

Browse files
authored
Admin bar in editor experiment: show site icon instead of dashicon if set (#79049)
1 parent 2e1dd9b commit 8eb6461

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

lib/experimental/omnibar/load.php

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,86 @@ static function () use ( $admin_color_class ) {
9292
}
9393

9494
add_action( 'site-editor-v2_init', 'gutenberg_enable_omnibar_in_site_editor_v2' );
95+
96+
/**
97+
* Replaces the home/odometer dashicon in the admin bar site menu with the
98+
* actual site icon, if one is set.
99+
*
100+
* @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
101+
*/
102+
function gutenberg_omnibar_site_icon( $wp_admin_bar ) {
103+
if (
104+
! is_admin_bar_showing() ||
105+
! gutenberg_is_experiment_enabled( 'gutenberg-omnibar' )
106+
) {
107+
return;
108+
}
109+
110+
$node = $wp_admin_bar->get_node( 'site-name' );
111+
if ( ! $node ) {
112+
return;
113+
}
114+
115+
$site_icon_url = get_site_icon_url( 64 );
116+
if ( ! $site_icon_url ) {
117+
return;
118+
}
119+
120+
$meta = (array) $node->meta;
121+
$meta['class'] = isset( $meta['class'] ) ? trim( $meta['class'] . ' has-site-icon' ) : 'has-site-icon';
122+
123+
$wp_admin_bar->add_node(
124+
array(
125+
'id' => 'site-name',
126+
'title' => '<img class="site-icon" src="' . esc_url( $site_icon_url ) . '" alt="" />' . $node->title,
127+
'meta' => $meta,
128+
)
129+
);
130+
}
131+
132+
add_action( 'admin_bar_menu', 'gutenberg_omnibar_site_icon', 31 );
133+
134+
/**
135+
* Adds the styles for the admin bar site icon.
136+
*/
137+
function gutenberg_omnibar_site_icon_styles() {
138+
if (
139+
! is_admin_bar_showing() ||
140+
! gutenberg_is_experiment_enabled( 'gutenberg-omnibar' )
141+
) {
142+
return;
143+
}
144+
145+
$css = <<<CSS
146+
#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before {
147+
content: none;
148+
}
149+
150+
#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
151+
width: 20px;
152+
height: 20px;
153+
margin: 0;
154+
margin-inline-end: 6px;
155+
vertical-align: -5px;
156+
background: #f0f0f1;
157+
border-radius: 2px;
158+
}
159+
160+
@media screen and (max-width: 782px) {
161+
#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
162+
position: absolute;
163+
top: 9px;
164+
inset-inline-start: 12px;
165+
width: 28px;
166+
height: 28px;
167+
margin: 0;
168+
border-radius: 4px;
169+
}
170+
}
171+
CSS;
172+
173+
wp_add_inline_style( 'admin-bar', $css );
174+
}
175+
176+
add_action( 'wp_enqueue_scripts', 'gutenberg_omnibar_site_icon_styles' );
177+
add_action( 'admin_enqueue_scripts', 'gutenberg_omnibar_site_icon_styles' );

0 commit comments

Comments
 (0)