Accessibility: Themes: Only unlink custom logo on the home page if the theme declares support for that.

To accommodate for the change, the custom-logo theme feature now accepts the unlink-homepage-logo parameter.

If and when the logo is linked on the home page, the link has the aria-current attribute for better accessibility.

Follow-up to [48039], [48283], see [48749].

This brings the changes to the 5.5 branch.

Props sabernhardt, audrasjb, johnstonphilip, demetris, SergeyBiryukov.
Fixes #37011.


git-svn-id: https://develop.svn.wordpress.org/branches/5.5@48755 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jake Spurlock 2020-08-07 19:18:19 +00:00
parent ed42560f33
commit 2dd5d516ce
2 changed files with 15 additions and 8 deletions

View File

@ -1021,7 +1021,9 @@ function get_custom_logo( $blog_id = 0 ) {
'class' => 'custom-logo', 'class' => 'custom-logo',
); );
if ( is_front_page() ) { $unlink_homepage_logo = (bool) get_theme_support( 'custom-logo', 'unlink-homepage-logo' );
if ( $unlink_homepage_logo && is_front_page() && ! is_paged() ) {
/* /*
* If on the home page, set the logo alt attribute to an empty string, * If on the home page, set the logo alt attribute to an empty string,
* as the image is decorative and doesn't need its purpose to be described. * as the image is decorative and doesn't need its purpose to be described.
@ -1055,16 +1057,19 @@ function get_custom_logo( $blog_id = 0 ) {
*/ */
$image = wp_get_attachment_image( $custom_logo_id, 'full', false, $custom_logo_attr ); $image = wp_get_attachment_image( $custom_logo_id, 'full', false, $custom_logo_attr );
if ( is_front_page() ) { if ( $unlink_homepage_logo && is_front_page() && ! is_paged() ) {
// If on the home page, don't link the logo to home. // If on the home page, don't link the logo to home.
$html = sprintf( $html = sprintf(
'<span class="custom-logo-link">%1$s</span>', '<span class="custom-logo-link">%1$s</span>',
$image $image
); );
} else { } else {
$aria_current = is_front_page() && ! is_paged() ? ' aria-current="page"' : '';
$html = sprintf( $html = sprintf(
'<a href="%1$s" class="custom-logo-link" rel="home">%2$s</a>', '<a href="%1$s" class="custom-logo-link" rel="home"%2$s>%3$s</a>',
esc_url( home_url( '/' ) ), esc_url( home_url( '/' ) ),
$aria_current,
$image $image
); );
} }

View File

@ -2472,6 +2472,7 @@ function get_theme_starter_content() {
* @since 5.3.0 Formalized the existing and already documented `...$args` parameter * @since 5.3.0 Formalized the existing and already documented `...$args` parameter
* by adding it to the function signature. * by adding it to the function signature.
* @since 5.5.0 The `core-block-patterns` feature was added and is enabled by default. * @since 5.5.0 The `core-block-patterns` feature was added and is enabled by default.
* @since 5.5.0 The `custom-logo` feature now also accepts 'unlink-homepage-logo'.
* *
* @global array $_wp_theme_features * @global array $_wp_theme_features
* *
@ -2543,6 +2544,7 @@ function add_theme_support( $feature, ...$args ) {
'flex-width' => false, 'flex-width' => false,
'flex-height' => false, 'flex-height' => false,
'header-text' => '', 'header-text' => '',
'unlink-homepage-logo' => false,
); );
$args[0] = wp_parse_args( array_intersect_key( $args[0], $defaults ), $defaults ); $args[0] = wp_parse_args( array_intersect_key( $args[0], $defaults ), $defaults );