Coding | Hooks und Filter | Webentwicklung

Warning: The navigation role is unnecessary for element nav

hiker 918473 1920

Mit WordPress 4.1 kamen die Funktionen get_the_posts_pagination() und the_posts_pagination(). Validiert man eine Seite die ein Theme mit dieser Funktion verwendet, wird Warning: The navigation role is unnecessary for element nav angezeigt.

validator warning

Wem das nicht gefällt, hier kommt die Lösung.

get_the_posts_pagination() verwendet paginate_links() und die von außen nicht zugängliche Funktion _navigation_markup für das Template.

Die Funktion ist in wp-includes/link-template.php

function _navigation_markup( $links, $class = 'posts-navigation', $screen_reader_text = '' ) {
    if ( empty( $screen_reader_text ) ) {
        $screen_reader_text = __( 'Posts navigation' );
    }
 
    $template = '
    <nav class="navigation %1$s" role="navigation">
        <h2 class="screen-reader-text">%2$s</h2>
        <div class="nav-links">%3$s</div>
    </nav>';
 
    /**
     * Filters the navigation markup template.
     *
     * Note: The filtered template HTML must contain specifiers for the navigation
     * class (%1$s), the screen-reader-text value (%2$s), and placement of the
     * navigation links (%3$s):
     *
     *     <nav class="navigation %1$s" role="navigation">
     *         <h2 class="screen-reader-text">%2$s</h2>
     *         <div class="nav-links">%3$s</div>
     *     </nav>
     *
     * @since 4.4.0
     *
     * @param string $template The default template.
     * @param string $class    The class passed by the calling function.
     * @return string Navigation template.
     */
    $template = apply_filters( 'navigation_markup_template', $template, $class );
 
    return sprintf( $template, sanitize_html_class( $class ), esc_html( $screen_reader_text ), $links );
}

Das Template ist jedoch über einen Filter modifizierbar:

 $template = apply_filters( 'navigation_markup_template', $template, $class );

.

Das role-Attribut aus dem Template entfernen

function flxo_validate_pagination( $template ) {
    return str_replace( 'role="navigation"', '', $template );
}
add_filter( 'navigation_markup_template', 'flxo_validate_pagination' );

Der Filter wirkt auch auf die Paginierung von Kommentaren, da sie dasselbe Template verwendet.

validator clean

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.