Index: src/wp-includes/class-wp-admin-bar.php
===================================================================
--- src/wp-includes/class-wp-admin-bar.php	(revision 51304)
+++ src/wp-includes/class-wp-admin-bar.php	(working copy)
@@ -108,7 +108,11 @@
 	 *
 	 * @since 3.1.0
 	 * @since 4.5.0 Added the ability to pass 'lang' and 'dir' meta data.
+	 * @since x.x.x Added the ability to pass 'hreflang', 'aria-describedby' and data attributes as meta data.
+	 * @since x.x.x Added `aria-current` attribute.
 	 *
+	 * @global string $pagenow
+	 *
 	 * @param array $args {
 	 *     Arguments for adding a node.
 	 *
@@ -117,8 +121,11 @@
 	 *     @type string $parent Optional. ID of the parent node.
 	 *     @type string $href   Optional. Link for the item.
 	 *     @type bool   $group  Optional. Whether or not the node is a group. Default false.
-	 *     @type array  $meta   Meta data including the following keys: 'html', 'class', 'rel', 'lang', 'dir',
-	 *                          'onclick', 'target', 'title', 'tabindex'. Default empty.
+	 *     @type array  $meta   Optional. Meta data including the following keys: 'html', 'class', 'rel', 'lang', 'dir',
+	 *                          'onclick', 'target', 'title', 'tabindex', 'hreflang', 'aria-describedby'.
+	 *                          Use 'html' to append arbitrary HTML content within the node item.
+	 *                          Use 'class' to apply classes to the node element.
+	 *                          Default empty.
 	 * }
 	 */
 	public function add_node( $args ) {
@@ -537,23 +544,30 @@
 		echo "<li id='" . esc_attr( 'wp-admin-bar-' . $node->id ) . "'$menuclass>";
 
 		if ( $has_link ) {
-			$attributes = array( 'onclick', 'target', 'title', 'rel', 'lang', 'dir' );
+			if ( is_admin() ) {
+				global $pagenow;
+				if ( $node->href == network_admin_url( $pagenow ) ) {
+					$aria_attributes .= ' aria-current="page"';
+				}
+			}
 			echo "<a class='ab-item'$aria_attributes href='" . esc_url( $node->href ) . "'";
 		} else {
-			$attributes = array( 'onclick', 'target', 'title', 'rel', 'lang', 'dir' );
 			echo '<div class="ab-item ab-empty-item"' . $aria_attributes;
 		}
 
-		foreach ( $attributes as $attribute ) {
-			if ( empty( $node->meta[ $attribute ] ) ) {
+		$allowed = array( 'onclick', 'target', 'title', 'rel', 'lang', 'dir', 'hreflang', 'aria-describedby' );
+
+		foreach ( $node->meta as $attr => $value ) {
+			if ( ( empty( $value ) || ! in_array( $attr, $allowed ) ) 
+			     && 0 !== stripos( $attr, 'data-' ) ) {
 				continue;
 			}
 
-			if ( 'onclick' === $attribute ) {
-				echo " $attribute='" . esc_js( $node->meta[ $attribute ] ) . "'";
-			} else {
-				echo " $attribute='" . esc_attr( $node->meta[ $attribute ] ) . "'";
-			}
+			printf(
+				' %s="%s"',
+				$attr,
+				"onclick" === $attr ? esc_js( $value ) : esc_attr( $value )
+			);
 		}
 
 		echo ">{$arrow}{$node->title}";
