Skip to content

Commit 646995d

Browse files
committed
Admin bar: show site icon if set
1 parent 9f32f0d commit 646995d

3 files changed

Lines changed: 64 additions & 4 deletions

File tree

src/wp-includes/admin-bar.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -385,15 +385,22 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
385385
}
386386

387387
$title = wp_html_excerpt( $blogname, 40, '…' );
388+
$meta = array(
389+
'menu_title' => $title,
390+
);
391+
392+
$site_icon_url = get_site_icon_url( 64 );
393+
if ( $site_icon_url ) {
394+
$title = '<img class="site-icon" src="' . esc_url( $site_icon_url ) . '" alt="" />' . $title;
395+
$meta['class'] = 'has-site-icon';
396+
}
388397

389398
$wp_admin_bar->add_node(
390399
array(
391400
'id' => 'site-name',
392401
'title' => $title,
393402
'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(),
394-
'meta' => array(
395-
'menu_title' => $title,
396-
),
403+
'meta' => $meta,
397404
)
398405
);
399406

src/wp-includes/css/admin-bar.css

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,19 @@ html:lang(he-il) .rtl #wpadminbar * {
581581
content: "\f102" / '';
582582
}
583583

584+
#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before {
585+
content: none;
586+
}
587+
588+
#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
589+
width: 20px;
590+
height: 20px;
591+
margin: 0 6px 0 0;
592+
vertical-align: -5px;
593+
background: #f0f0f1;
594+
border-radius: 4px;
595+
}
596+
584597

585598

586599
/**
@@ -902,7 +915,7 @@ html:lang(he-il) .rtl #wpadminbar * {
902915

903916
#wpadminbar #wp-admin-bar-edit > .ab-item:before,
904917
#wpadminbar #wp-admin-bar-my-sites > .ab-item:before,
905-
#wpadminbar #wp-admin-bar-site-name > .ab-item:before,
918+
#wpadminbar #wp-admin-bar-site-name:not(.has-site-icon) > .ab-item:before,
906919
#wpadminbar #wp-admin-bar-site-editor > .ab-item:before,
907920
#wpadminbar #wp-admin-bar-customize > .ab-item:before,
908921
#wpadminbar #wp-admin-bar-my-account > .ab-item:before,
@@ -917,6 +930,15 @@ html:lang(he-il) .rtl #wpadminbar * {
917930
-moz-osx-font-smoothing: grayscale;
918931
}
919932

933+
#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
934+
position: absolute;
935+
top: 9px;
936+
left: 12px;
937+
width: 28px;
938+
height: 28px;
939+
margin: 0;
940+
}
941+
920942
#wpadminbar #wp-admin-bar-appearance {
921943
margin-top: 0;
922944
}

tests/phpunit/tests/adminbar.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,37 @@ public function test_admin_bar_contains_correct_links_for_users_with_role() {
131131
$this->assertSame( $profile_url, $node_user_info->href );
132132
}
133133

134+
/**
135+
* @covers ::wp_admin_bar_site_menu
136+
*/
137+
public function test_admin_bar_site_name_node_has_no_site_icon_when_unset() {
138+
wp_set_current_user( self::$editor_id );
139+
140+
$wp_admin_bar = $this->get_standard_admin_bar();
141+
$node_site_name = $wp_admin_bar->get_node( 'site-name' );
142+
143+
$this->assertStringNotContainsString( 'site-icon', $node_site_name->title );
144+
$this->assertArrayNotHasKey( 'class', $node_site_name->meta );
145+
}
146+
147+
/**
148+
* @covers ::wp_admin_bar_site_menu
149+
* @requires function imagejpeg
150+
*/
151+
public function test_admin_bar_site_name_node_includes_site_icon_when_set() {
152+
wp_set_current_user( self::$editor_id );
153+
154+
$attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' );
155+
update_option( 'site_icon', $attachment_id );
156+
157+
$wp_admin_bar = $this->get_standard_admin_bar();
158+
$node_site_name = $wp_admin_bar->get_node( 'site-name' );
159+
160+
$this->assertStringContainsString( '<img class="site-icon"', $node_site_name->title );
161+
$this->assertStringContainsString( esc_url( get_site_icon_url( 64 ) ), $node_site_name->title );
162+
$this->assertSame( 'has-site-icon', $node_site_name->meta['class'] );
163+
}
164+
134165
/**
135166
* @ticket 25162
136167
* @group multisite

0 commit comments

Comments
 (0)