wp/wp-includes/blocks/categories.php
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 19 3d72ae0968f4
--- a/wp/wp-includes/blocks/categories.php	Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-includes/blocks/categories.php	Wed Sep 21 18:19:35 2022 +0200
@@ -28,32 +28,30 @@
 		$id                       = 'wp-block-categories-' . $block_id;
 		$args['id']               = $id;
 		$args['show_option_none'] = __( 'Select Category' );
-		$wrapper_markup           = '<div class="%1$s">%2$s</div>';
+		$wrapper_markup           = '<div %1$s><label class="screen-reader-text" for="' . $id . '">' . __( 'Categories' ) . '</label>%2$s</div>';
 		$items_markup             = wp_dropdown_categories( $args );
 		$type                     = 'dropdown';
 
 		if ( ! is_admin() ) {
-			$wrapper_markup .= build_dropdown_script_block_core_categories( $id );
+			// Inject the dropdown script immediately after the select dropdown.
+			$items_markup = preg_replace(
+				'#(?<=</select>)#',
+				build_dropdown_script_block_core_categories( $id ),
+				$items_markup,
+				1
+			);
 		}
 	} else {
-		$wrapper_markup = '<ul class="%1$s">%2$s</ul>';
+		$wrapper_markup = '<ul %1$s>%2$s</ul>';
 		$items_markup   = wp_list_categories( $args );
 		$type           = 'list';
 	}
 
-	$class = "wp-block-categories wp-block-categories-{$type}";
-
-	if ( isset( $attributes['align'] ) ) {
-		$class .= " align{$attributes['align']}";
-	}
-
-	if ( isset( $attributes['className'] ) ) {
-		$class .= " {$attributes['className']}";
-	}
+	$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => "wp-block-categories-{$type}" ) );
 
 	return sprintf(
 		$wrapper_markup,
-		esc_attr( $class ),
+		$wrapper_attributes,
 		$items_markup
 	);
 }