--- 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 = '<li ' . $wrapper_attributes . '><a class="wp-block-home-link__content wp-block-navigation-item__content" rel="home"' . $aria_current;
-
- // Start appending HTML attributes to anchor tag.
- $html .= ' href="' . esc_url( home_url() ) . '"';
-
- // End appending HTML attributes to anchor tag.
- $html .= '>';
-
- if ( isset( $attributes['label'] ) ) {
- $html .= wp_kses_post( $attributes['label'] );
- }
-
- $html .= '</a></li>';
- return $html;
+ return sprintf(
+ '<li %1$s><a class="wp-block-home-link__content wp-block-navigation-item__content" href="%2$s" rel="home"%3$s>%4$s</a></li>',
+ block_core_home_link_build_li_wrapper_attributes( $block->context ),
+ esc_url( home_url() ),
+ $aria_current,
+ wp_kses_post( $attributes['label'] )
+ );
}
/**
* Register the home block
*
+ * @since 6.0.0
+ *
* @uses render_block_core_home_link()
* @throws WP_Error An WP_Error exception parsing the block definition.
*/