Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions src/wp-includes/admin-bar.php
Original file line number Diff line number Diff line change
Expand Up @@ -385,15 +385,22 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
}

$title = wp_html_excerpt( $blogname, 40, '…' );
$meta = array(
'menu_title' => $title,
);

$site_icon_url = get_site_icon_url( 64 );
if ( $site_icon_url ) {
$title = '<img class="site-icon" src="' . esc_url( $site_icon_url ) . '" alt="" />' . $title;
$meta['class'] = 'has-site-icon';
}

$wp_admin_bar->add_node(
array(
'id' => 'site-name',
'title' => $title,
'href' => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(),
'meta' => array(
'menu_title' => $title,
),
'meta' => $meta,
)
);

Expand Down
24 changes: 23 additions & 1 deletion src/wp-includes/css/admin-bar.css
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,19 @@ html:lang(he-il) .rtl #wpadminbar * {
content: "\f102" / '';
}

#wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before {
content: none;
}

#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
width: 20px;
height: 20px;
margin: 0 6px 0 0;
vertical-align: -5px;
background: #f0f0f1;
border-radius: 4px;
}



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

#wpadminbar #wp-admin-bar-edit > .ab-item:before,
#wpadminbar #wp-admin-bar-my-sites > .ab-item:before,
#wpadminbar #wp-admin-bar-site-name > .ab-item:before,
#wpadminbar #wp-admin-bar-site-name:not(.has-site-icon) > .ab-item:before,
#wpadminbar #wp-admin-bar-site-editor > .ab-item:before,
#wpadminbar #wp-admin-bar-customize > .ab-item:before,
#wpadminbar #wp-admin-bar-my-account > .ab-item:before,
Expand All @@ -917,6 +930,15 @@ html:lang(he-il) .rtl #wpadminbar * {
-moz-osx-font-smoothing: grayscale;
}

#wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
position: absolute;
top: 9px;
left: 12px;
width: 28px;
height: 28px;
margin: 0;
}

#wpadminbar #wp-admin-bar-appearance {
margin-top: 0;
}
Expand Down
31 changes: 31 additions & 0 deletions tests/phpunit/tests/adminbar.php
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,37 @@ public function data_my_sites_network_menu_items() {
);
}

/**
* @covers ::wp_admin_bar_site_menu
*/
public function test_site_name_menu_has_no_site_icon_when_unset() {
wp_set_current_user( self::$editor_id );

$wp_admin_bar = $this->get_standard_admin_bar();
$node_site_name = $wp_admin_bar->get_node( 'site-name' );

$this->assertStringNotContainsString( 'site-icon', $node_site_name->title );
$this->assertArrayNotHasKey( 'class', $node_site_name->meta );
}

/**
* @covers ::wp_admin_bar_site_menu
* @requires function imagejpeg
*/
public function test_site_name_menu_includes_site_icon_when_set() {
wp_set_current_user( self::$editor_id );

$attachment_id = self::factory()->attachment->create_upload_object( DIR_TESTDATA . '/images/test-image.jpg' );
update_option( 'site_icon', $attachment_id );

$wp_admin_bar = $this->get_standard_admin_bar();
$node_site_name = $wp_admin_bar->get_node( 'site-name' );

$this->assertStringContainsString( '<img class="site-icon"', $node_site_name->title );
$this->assertStringContainsString( esc_url( get_site_icon_url( 64 ) ), $node_site_name->title );
$this->assertSame( 'has-site-icon', $node_site_name->meta['class'] );
}

/**
* This test ensures that WP_Admin_Bar::$proto is not defined (including magic methods).
*
Expand Down
Loading