Warning: The navigation role is unnecessary for element nav

hiker 918473 1920

Bildquelle: Pixabay, dreamypixel

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

mehr Beiträge über:

,

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable