Themes: Improve the theme Custom Logo accessibility.

Uses the Site title as fallback value for the Custom Logo alt attribute when the original alt attribute is empty.

Props sami.keijonen, joedolson, sstoqnov, nobremarcos, gma992, LiamMcArthur, jjcomack.
Fixes #38768.


git-svn-id: https://develop.svn.wordpress.org/trunk@40817 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrea Fercia 2017-05-22 20:28:43 +00:00
parent 9e969efb89
commit 181ecf1ec3
2 changed files with 63 additions and 10 deletions

View File

@ -888,12 +888,27 @@ function get_custom_logo( $blog_id = 0 ) {
// We have a logo. Logo is go.
if ( $custom_logo_id ) {
$custom_logo_attr = array(
'class' => 'custom-logo',
'itemprop' => 'logo',
);
/*
* If the logo alt attribute is empty, get the site title and explicitly
* pass it to the attributes used by wp_get_attachment_image().
*/
$image_alt = get_post_meta( $custom_logo_id, '_wp_attachment_image_alt', true );
if ( empty( $image_alt ) ) {
$custom_logo_attr['alt'] = get_bloginfo( 'name', 'display' );
}
/*
* If the alt attribute is not empty, there's no need to explicitly pass
* it because wp_get_attachment_image() already adds the alt attribute.
*/
$html = sprintf( '<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>',
esc_url( home_url( '/' ) ),
wp_get_attachment_image( $custom_logo_id, 'full', false, array(
'class' => 'custom-logo',
'itemprop' => 'logo',
) )
wp_get_attachment_image( $custom_logo_id, 'full', false, $custom_logo_attr )
);
}

View File

@ -307,11 +307,20 @@ class Tests_General_Template extends WP_UnitTestCase {
switch_to_blog( $blog_id );
$this->_set_custom_logo();
$custom_logo_attr = array(
'class' => 'custom-logo',
'itemprop' => 'logo',
);
// If the logo alt attribute is empty, use the site title.
$image_alt = get_post_meta( $this->custom_logo_id, '_wp_attachment_image_alt', true );
if ( empty( $image_alt ) ) {
$custom_logo_attr['alt'] = get_bloginfo( 'name', 'display' );
}
$home_url = get_home_url( $blog_id, '/' );
$image = wp_get_attachment_image( $this->custom_logo_id, 'full', false, array(
'class' => 'custom-logo',
'itemprop' => 'logo',
) );
$image = wp_get_attachment_image( $this->custom_logo_id, 'full', false, $custom_logo_attr );
restore_current_blog();
$expected_custom_logo = '<a href="' . $home_url . '" class="custom-logo-link" rel="home" itemprop="url">' . $image . '</a>';
@ -328,9 +337,38 @@ class Tests_General_Template extends WP_UnitTestCase {
the_custom_logo();
$this->_set_custom_logo();
$custom_logo_attr = array(
'class' => 'custom-logo',
'itemprop' => 'logo',
);
// If the logo alt attribute is empty, use the site title.
$image_alt = get_post_meta( $this->custom_logo_id, '_wp_attachment_image_alt', true );
if ( empty( $image_alt ) ) {
$custom_logo_attr['alt'] = get_bloginfo( 'name', 'display' );
}
$image = wp_get_attachment_image( $this->custom_logo_id, 'full', false, $custom_logo_attr );
$this->expectOutputString( '<a href="http://' . WP_TESTS_DOMAIN . '/" class="custom-logo-link" rel="home" itemprop="url">' . $image . '</a>' );
the_custom_logo();
}
/**
* @group custom_logo
* @ticket 38768
*/
function test_the_custom_logo_with_alt() {
$this->_set_custom_logo();
$image_alt = 'My alt attribute';
update_post_meta( $this->custom_logo_id, '_wp_attachment_image_alt', $image_alt );
$image = wp_get_attachment_image( $this->custom_logo_id, 'full', false, array(
'class' => 'custom-logo',
'itemprop' => 'logo',
'class' => 'custom-logo',
'itemprop' => 'logo',
) );
$this->expectOutputString( '<a href="http://' . WP_TESTS_DOMAIN . '/" class="custom-logo-link" rel="home" itemprop="url">' . $image . '</a>' );