diff options
Diffstat (limited to 'wp-includes/class-wp-admin-bar.php')
-rw-r--r-- | wp-includes/class-wp-admin-bar.php | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/wp-includes/class-wp-admin-bar.php b/wp-includes/class-wp-admin-bar.php index ee3888e..093ed01 100644 --- a/wp-includes/class-wp-admin-bar.php +++ b/wp-includes/class-wp-admin-bar.php @@ -107,6 +107,7 @@ class WP_Admin_Bar { * * @since 3.1.0 * @since 4.5.0 Added the ability to pass 'lang' and 'dir' meta data. + * @since 6.5.0 Added the ability to pass 'menu_title' for an ARIA menu name. * * @param array $args { * Arguments for adding a node. @@ -117,7 +118,7 @@ class WP_Admin_Bar { * @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. + * 'onclick', 'target', 'title', 'tabindex', 'menu_title'. Default empty. * } */ public function add_node( $args ) { @@ -478,9 +479,6 @@ class WP_Admin_Bar { } ?> </div> - <?php if ( is_user_logged_in() ) : ?> - <a class="screen-reader-shortcut" href="<?php echo esc_url( wp_logout_url() ); ?>"><?php _e( 'Log Out' ); ?></a> - <?php endif; ?> </div> <?php @@ -505,10 +503,12 @@ class WP_Admin_Bar { /** * @since 3.3.0 + * @since 6.5.0 Added `$menu_title` parameter to allow an ARIA menu name. * * @param object $node + * @param string|bool $menu_title The accessible name of this ARIA menu or false if not provided. */ - final protected function _render_group( $node ) { + final protected function _render_group( $node, $menu_title = false ) { if ( 'container' === $node->type ) { $this->_render_container( $node ); return; @@ -523,7 +523,11 @@ class WP_Admin_Bar { $class = ''; } - echo "<ul id='" . esc_attr( 'wp-admin-bar-' . $node->id ) . "'$class>"; + if ( empty( $menu_title ) ) { + echo "<ul role='menu' id='" . esc_attr( 'wp-admin-bar-' . $node->id ) . "'$class>"; + } else { + echo "<ul role='menu' aria-label='" . esc_attr( $menu_title ) . "' id='" . esc_attr( 'wp-admin-bar-' . $node->id ) . "'$class>"; + } foreach ( $node->children as $item ) { $this->_render_item( $item ); } @@ -546,15 +550,16 @@ class WP_Admin_Bar { $is_top_secondary_item = 'top-secondary' === $node->parent; // Allow only numeric values, then casted to integers, and allow a tabindex value of `0` for a11y. - $tabindex = ( isset( $node->meta['tabindex'] ) && is_numeric( $node->meta['tabindex'] ) ) ? (int) $node->meta['tabindex'] : ''; - $aria_attributes = ( '' !== $tabindex ) ? ' tabindex="' . $tabindex . '"' : ''; + $tabindex = ( isset( $node->meta['tabindex'] ) && is_numeric( $node->meta['tabindex'] ) ) ? (int) $node->meta['tabindex'] : ''; + $aria_attributes = ( '' !== $tabindex ) ? ' tabindex="' . $tabindex . '"' : ''; + $aria_attributes .= ' role="menuitem"'; $menuclass = ''; $arrow = ''; if ( $is_parent ) { $menuclass = 'menupop '; - $aria_attributes .= ' aria-haspopup="true"'; + $aria_attributes .= ' aria-expanded="false"'; } if ( ! empty( $node->meta['class'] ) ) { @@ -603,7 +608,11 @@ class WP_Admin_Bar { if ( $is_parent ) { echo '<div class="ab-sub-wrapper">'; foreach ( $node->children as $group ) { - $this->_render_group( $group ); + if ( empty( $node->meta['menu_title'] ) ) { + $this->_render_group( $group, false ); + } else { + $this->_render_group( $group, $node->meta['menu_title'] ); + } } echo '</div>'; } |