WordPress.org

Make WordPress Core

Ticket #47123: 47123.diff

File 47123.diff, 8.7 KB (added by sabernhardt, 6 months ago)
  • src/wp-includes/link-template.php

     
    25462546 *     @type array|string $excluded_terms     Array or comma-separated list of excluded term IDs. Default empty.
    25472547 *     @type string       $taxonomy           Taxonomy, if `$in_same_term` is true. Default 'category'.
    25482548 *     @type string       $screen_reader_text Screen reader text for nav element. Default 'Post navigation'.
     2549 *     @type string       $aria_label         ARIA label text for nav element. Default 'Posts'.
    25492550 * }
    25502551 * @return string Markup for post links.
    25512552 */
    25522553function get_the_post_navigation( $args = array() ) {
     2554        // Is screen_reader_text customized but not aria_label?
     2555        if( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
     2556                $args['aria_label'] = $args['screen_reader_text'];
     2557        }
     2558
    25532559        $args = wp_parse_args(
    25542560                $args,
    25552561                array(
     
    25592565                        'excluded_terms'     => '',
    25602566                        'taxonomy'           => 'category',
    25612567                        'screen_reader_text' => __( 'Post navigation' ),
     2568                        'aria_label'         => __( 'Posts' ),
    25622569                )
    25632570        );
    25642571
     
    25822589
    25832590        // Only add markup if there's somewhere to navigate to.
    25842591        if ( $previous || $next ) {
    2585                 $navigation = _navigation_markup( $previous . $next, 'post-navigation', $args['screen_reader_text'] );
     2592                $navigation = _navigation_markup( $previous . $next, 'post-navigation', $args['screen_reader_text'], $args['aria_label'] );
    25862593        }
    25872594
    25882595        return $navigation;
     
    26162623 *                                      Default 'Newer posts'.
    26172624 *     @type string $screen_reader_text Screen reader text for nav element.
    26182625 *                                      Default 'Posts navigation'.
     2626 *     @type string $aria_label         ARIA label text for nav element.
     2627 *                                      Default 'Posts'.
    26192628 * }
    26202629 * @return string Markup for posts links.
    26212630 */
     
    26242633
    26252634        // Don't print empty markup if there's only one page.
    26262635        if ( $GLOBALS['wp_query']->max_num_pages > 1 ) {
     2636                // Is screen_reader_text customized but not aria_label?
     2637                if( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
     2638                        $args['aria_label'] = $args['screen_reader_text'];
     2639                }
     2640
    26272641                $args = wp_parse_args(
    26282642                        $args,
    26292643                        array(
    26302644                                'prev_text'          => __( 'Older posts' ),
    26312645                                'next_text'          => __( 'Newer posts' ),
    26322646                                'screen_reader_text' => __( 'Posts navigation' ),
     2647                                'aria_label'         => __( 'Posts' ),
    26332648                        )
    26342649                );
    26352650
     
    26442659                        $navigation .= '<div class="nav-next">' . $next_link . '</div>';
    26452660                }
    26462661
    2647                 $navigation = _navigation_markup( $navigation, 'posts-navigation', $args['screen_reader_text'] );
     2662                $navigation = _navigation_markup( $navigation, 'posts-navigation', $args['screen_reader_text'], $args['aria_label'] );
    26482663        }
    26492664
    26502665        return $navigation;
     
    26722687 *
    26732688 *     @type string $screen_reader_text Screen reader text for navigation element.
    26742689 *                                      Default 'Posts navigation'.
     2690 *     @type string $aria_label         ARIA label text for nav element.
     2691 *                                      Default 'Posts'.
    26752692 * }
    26762693 * @return string Markup for pagination links.
    26772694 */
     
    26802697
    26812698        // Don't print empty markup if there's only one page.
    26822699        if ( $GLOBALS['wp_query']->max_num_pages > 1 ) {
     2700                // Is screen_reader_text customized but not aria_label?
     2701                if( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
     2702                        $args['aria_label'] = $args['screen_reader_text'];
     2703                }
     2704
    26832705                $args = wp_parse_args(
    26842706                        $args,
    26852707                        array(
     
    26872709                                'prev_text'          => _x( 'Previous', 'previous set of posts' ),
    26882710                                'next_text'          => _x( 'Next', 'next set of posts' ),
    26892711                                'screen_reader_text' => __( 'Posts navigation' ),
     2712                                'aria_label'         => __( 'Posts' ),
    26902713                        )
    26912714                );
    26922715
     
    26992722                $links = paginate_links( $args );
    27002723
    27012724                if ( $links ) {
    2702                         $navigation = _navigation_markup( $links, 'pagination', $args['screen_reader_text'] );
     2725                        $navigation = _navigation_markup( $links, 'pagination', $args['screen_reader_text'], $args['aria_label'] );
    27032726                }
    27042727        }
    27052728
     
    27272750 * @param string $links              Navigational links.
    27282751 * @param string $class              Optional. Custom class for nav element. Default: 'posts-navigation'.
    27292752 * @param string $screen_reader_text Optional. Screen reader text for nav element. Default: 'Posts navigation'.
     2753 * @param string $aria_label         Optional. ARIA label for nav element. Default: same value as $screen_reader_text.
    27302754 * @return string Navigation template tag.
    27312755 */
    2732 function _navigation_markup( $links, $class = 'posts-navigation', $screen_reader_text = '' ) {
     2756function _navigation_markup( $links, $class = 'posts-navigation', $screen_reader_text = '', $aria_label = '' ) {
    27332757        if ( empty( $screen_reader_text ) ) {
    27342758                $screen_reader_text = __( 'Posts navigation' );
    27352759        }
     2760        if ( empty( $aria_label ) ) {
     2761                $aria_label = $screen_reader_text;
     2762        }
    27362763
    27372764        $template = '
    2738         <nav class="navigation %1$s" role="navigation">
     2765        <nav class="navigation %1$s" role="navigation" aria-label="%4$s">
    27392766                <h2 class="screen-reader-text">%2$s</h2>
    27402767                <div class="nav-links">%3$s</div>
    27412768        </nav>';
     
    27442771         * Filters the navigation markup template.
    27452772         *
    27462773         * Note: The filtered template HTML must contain specifiers for the navigation
    2747          * class (%1$s), the screen-reader-text value (%2$s), and placement of the
    2748          * navigation links (%3$s):
     2774         * class (%1$s), the screen-reader-text value (%2$s), placement of the navigation
     2775         * links (%3$s), and ARIA label text if screen-reader-text does not fit that (%4$s):
    27492776         *
    2750          *     <nav class="navigation %1$s" role="navigation">
     2777         *     <nav class="navigation %1$s" role="navigation" aria-label="%4$s">
    27512778         *         <h2 class="screen-reader-text">%2$s</h2>
    27522779         *         <div class="nav-links">%3$s</div>
    27532780         *     </nav>
     
    27602787         */
    27612788        $template = apply_filters( 'navigation_markup_template', $template, $class );
    27622789
    2763         return sprintf( $template, sanitize_html_class( $class ), esc_html( $screen_reader_text ), $links );
     2790        return sprintf( $template, sanitize_html_class( $class ), esc_html( $screen_reader_text ), $links, esc_html( $aria_label ) );
    27642791}
    27652792
    27662793/**
     
    29783005 *     @type string $next_text          Anchor text to display in the next comments link.
    29793006 *                                      Default 'Newer comments'.
    29803007 *     @type string $screen_reader_text Screen reader text for nav element. Default 'Comments navigation'.
     3008 *     @type string $aria_label         ARIA label text for nav element. Default 'Comments'.
    29813009 * }
    29823010 * @return string Markup for comments links.
    29833011 */
     
    29863014
    29873015        // Are there comments to navigate through?
    29883016        if ( get_comment_pages_count() > 1 ) {
     3017                // Is screen_reader_text customized but not aria_label?
     3018                if( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
     3019                        $args['aria_label'] = $args['screen_reader_text'];
     3020                }
     3021
    29893022                $args = wp_parse_args(
    29903023                        $args,
    29913024                        array(
    29923025                                'prev_text'          => __( 'Older comments' ),
    29933026                                'next_text'          => __( 'Newer comments' ),
    29943027                                'screen_reader_text' => __( 'Comments navigation' ),
     3028                                'aria_label'         => __( 'Comments' ),
    29953029                        )
    29963030                );
    29973031
     
    30063040                        $navigation .= '<div class="nav-next">' . $next_link . '</div>';
    30073041                }
    30083042
    3009                 $navigation = _navigation_markup( $navigation, 'comment-navigation', $args['screen_reader_text'] );
     3043                $navigation = _navigation_markup( $navigation, 'comment-navigation', $args['screen_reader_text'], $args['aria_label'] );
    30103044        }
    30113045
    30123046        return $navigation;
     
    30343068 *     Optional. Default pagination arguments.
    30353069 *
    30363070 *     @type string $screen_reader_text Screen reader text for nav element. Default 'Comments navigation'.
     3071 *     @type string $aria_label         ARIA label text for nav element. Default 'Comments'.
    30373072 * }
    30383073 * @return string Markup for pagination links.
    30393074 */
    30403075function get_the_comments_pagination( $args = array() ) {
    30413076        $navigation   = '';
     3077
     3078        // Is screen_reader_text customized but not aria_label?
     3079        if( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
     3080                $args['aria_label'] = $args['screen_reader_text'];
     3081        }
     3082
    30423083        $args         = wp_parse_args(
    30433084                $args,
    30443085                array(
    30453086                        'screen_reader_text' => __( 'Comments navigation' ),
     3087                        'aria_label'         => __( 'Comments' ),
    30463088                )
    30473089        );
    30483090        $args['echo'] = false;
     
    30553097        $links = paginate_comments_links( $args );
    30563098
    30573099        if ( $links ) {
    3058                 $navigation = _navigation_markup( $links, 'comments-pagination', $args['screen_reader_text'] );
     3100                $navigation = _navigation_markup( $links, 'comments-pagination', $args['screen_reader_text'], $args['aria_label'] );
    30593101        }
    30603102
    30613103        return $navigation;