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.
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.
Schreibe einen Kommentar