diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-includes/blocks/home-link.php --- a/wp/wp-includes/blocks/home-link.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-includes/blocks/home-link.php Fri Sep 05 18:40:08 2025 +0200 @@ -9,6 +9,8 @@ * Build an array with CSS classes and inline styles defining the colors * which will be applied to the home link markup in the front-end. * + * @since 6.0.0 + * * @param array $context home link block context. * @return array Colors CSS classes and inline styles. */ @@ -61,6 +63,8 @@ * Build an array with CSS classes and inline styles defining the font sizes * which will be applied to the home link markup in the front-end. * + * @since 6.0.0 + * * @param array $context Home link block context. * @return array Font size CSS classes and inline styles. */ @@ -88,8 +92,10 @@ /** * Builds an array with classes and style for the li wrapper * + * @since 6.0.0 + * * @param array $context Home link block context. - * @return array The li wrapper attributes. + * @return string The li wrapper attributes. */ function block_core_home_link_build_li_wrapper_attributes( $context ) { $colors = block_core_home_link_build_css_colors( $context ); @@ -99,11 +105,18 @@ $font_sizes['css_classes'] ); $style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] ); - $css_classes = trim( implode( ' ', $classes ) ) . ' wp-block-navigation-item'; + $classes[] = 'wp-block-navigation-item'; + + if ( is_front_page() ) { + $classes[] = 'current-menu-item'; + } elseif ( is_home() && ( (int) get_option( 'page_for_posts' ) !== get_queried_object_id() ) ) { + // Edge case where the Reading settings has a posts page set but not a static homepage. + $classes[] = 'current-menu-item'; + } $wrapper_attributes = get_block_wrapper_attributes( array( - 'class' => $css_classes, + 'class' => implode( ' ', $classes ), 'style' => $style_attribute, ) ); @@ -114,6 +127,8 @@ /** * Renders the `core/home-link` block. * + * @since 6.0.0 + * * @param array $attributes The block attributes. * @param string $content The saved content. * @param WP_Block $block The parsed block. @@ -122,32 +137,34 @@ */ function render_block_core_home_link( $attributes, $content, $block ) { if ( empty( $attributes['label'] ) ) { - return ''; + // Using a fallback for the label attribute allows rendering the block even if no attributes have been set, + // e.g. when using the block as a hooked block. + // Note that the fallback value needs to be kept in sync with the one set in `edit.js` (upon first loading the block in the editor). + $attributes['label'] = __( 'Home' ); + } + $aria_current = ''; + + if ( is_front_page() ) { + $aria_current = ' aria-current="page"'; + } elseif ( is_home() && ( (int) get_option( 'page_for_posts' ) !== get_queried_object_id() ) ) { + // Edge case where the Reading settings has a posts page set but not a static homepage. + $aria_current = ' aria-current="page"'; } - $wrapper_attributes = block_core_home_link_build_li_wrapper_attributes( $block->context ); - - $aria_current = is_home() || ( is_front_page() && 'page' === get_option( 'show_on_front' ) ) ? ' aria-current="page"' : ''; - - $html = '