wp/wp-includes/blocks/site-title.php
changeset 19 3d72ae0968f4
parent 18 be944660c56a
child 21 48c4eec2b7e6
--- a/wp/wp-includes/blocks/site-title.php	Wed Sep 21 18:19:35 2022 +0200
+++ b/wp/wp-includes/blocks/site-title.php	Tue Sep 27 16:37:53 2022 +0200
@@ -21,18 +21,31 @@
 	$tag_name         = 'h1';
 	$align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";
 
+	$aria_current = is_home() || ( is_front_page() && 'page' === get_option( 'show_on_front' ) ) ? ' aria-current="page"' : '';
+
 	if ( isset( $attributes['level'] ) ) {
-		$tag_name = 0 === $attributes['level'] ? 'p' : 'h' . $attributes['level'];
+		$tag_name = 0 === $attributes['level'] ? 'p' : 'h' . (int) $attributes['level'];
 	}
 
-	$link               = sprintf( '<a href="%1$s" rel="home">%2$s</a>', get_bloginfo( 'url' ), $site_title );
+	if ( $attributes['isLink'] ) {
+		$link_attrs = array(
+			'href="' . esc_url( get_bloginfo( 'url' ) ) . '"',
+			'rel="' . esc_attr( 'home' ) . '"',
+			$aria_current,
+		);
+		if ( '_blank' === $attributes['linkTarget'] ) {
+			$link_attrs[] = 'target="_blank"';
+		}
+		$site_title = sprintf( '<a %1$s>%2$s</a>', implode( ' ', $link_attrs ), esc_html( $site_title ) );
+	}
 	$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );
 
 	return sprintf(
 		'<%1$s %2$s>%3$s</%1$s>',
 		$tag_name,
 		$wrapper_attributes,
-		$link
+		// already pre-escaped if it is a link.
+		$attributes['isLink'] ? $site_title : esc_html( $site_title )
 	);
 }