Accessibility: use aria-current
for the paginated post links output by wp_link_pages()
.
Continues the introduction in core of the aria-current attribute after [41683], [41359], and [41371]. - changes the `wp_link_pages()` (see the `nextpage` quicktag) output to use an `aria-current` attribute on the current item - adds `post-nav-links` and `post-page-numbers` CSS classes to help themes style these links - updates the related tests Props antonioeatgoat, alexstine. Fixes #41859. git-svn-id: https://develop.svn.wordpress.org/trunk@42440 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
a8d74c4f4e
commit
1258d1d9d2
@ -862,6 +862,7 @@ function post_password_required( $post = null ) {
|
|||||||
* Quicktag one or more times). This tag must be within The Loop.
|
* Quicktag one or more times). This tag must be within The Loop.
|
||||||
*
|
*
|
||||||
* @since 1.2.0
|
* @since 1.2.0
|
||||||
|
* @since 5.0.0 Added the `aria_current` argument.
|
||||||
*
|
*
|
||||||
* @global int $page
|
* @global int $page
|
||||||
* @global int $numpages
|
* @global int $numpages
|
||||||
@ -877,6 +878,8 @@ function post_password_required( $post = null ) {
|
|||||||
* Also prepended to the current item, which is not linked. Default empty.
|
* Also prepended to the current item, which is not linked. Default empty.
|
||||||
* @type string $link_after HTML or text to append to each Pages link inside the `<a>` tag.
|
* @type string $link_after HTML or text to append to each Pages link inside the `<a>` tag.
|
||||||
* Also appended to the current item, which is not linked. Default empty.
|
* Also appended to the current item, which is not linked. Default empty.
|
||||||
|
* @type string $aria_current The value for the aria-current attribute. Possible values are 'page',
|
||||||
|
* 'step', 'location', 'date', 'time', 'true', 'false'. Default is 'page'.
|
||||||
* @type string $next_or_number Indicates whether page numbers should be used. Valid values are number
|
* @type string $next_or_number Indicates whether page numbers should be used. Valid values are number
|
||||||
* and next. Default is 'number'.
|
* and next. Default is 'number'.
|
||||||
* @type string $separator Text between pagination links. Default is ' '.
|
* @type string $separator Text between pagination links. Default is ' '.
|
||||||
@ -893,10 +896,11 @@ function wp_link_pages( $args = '' ) {
|
|||||||
global $page, $numpages, $multipage, $more;
|
global $page, $numpages, $multipage, $more;
|
||||||
|
|
||||||
$defaults = array(
|
$defaults = array(
|
||||||
'before' => '<p>' . __( 'Pages:' ),
|
'before' => '<p class="post-nav-links">' . __( 'Pages:' ),
|
||||||
'after' => '</p>',
|
'after' => '</p>',
|
||||||
'link_before' => '',
|
'link_before' => '',
|
||||||
'link_after' => '',
|
'link_after' => '',
|
||||||
|
'aria_current' => 'page',
|
||||||
'next_or_number' => 'number',
|
'next_or_number' => 'number',
|
||||||
'separator' => ' ',
|
'separator' => ' ',
|
||||||
'nextpagelink' => __( 'Next page' ),
|
'nextpagelink' => __( 'Next page' ),
|
||||||
@ -924,6 +928,8 @@ function wp_link_pages( $args = '' ) {
|
|||||||
$link = $r['link_before'] . str_replace( '%', $i, $r['pagelink'] ) . $r['link_after'];
|
$link = $r['link_before'] . str_replace( '%', $i, $r['pagelink'] ) . $r['link_after'];
|
||||||
if ( $i != $page || ! $more && 1 == $page ) {
|
if ( $i != $page || ! $more && 1 == $page ) {
|
||||||
$link = _wp_link_page( $i ) . $link . '</a>';
|
$link = _wp_link_page( $i ) . $link . '</a>';
|
||||||
|
} elseif ( $i === $page ) {
|
||||||
|
$link = '<span class="post-page-numbers current" aria-current="' . esc_attr( $r['aria_current'] ) . '">' . $link . '</span>';
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Filters the HTML output of individual page number links.
|
* Filters the HTML output of individual page number links.
|
||||||
@ -1017,7 +1023,7 @@ function _wp_link_page( $i ) {
|
|||||||
$url = get_preview_post_link( $post, $query_args, $url );
|
$url = get_preview_post_link( $post, $query_args, $url );
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<a href="' . esc_url( $url ) . '">';
|
return '<a href="' . esc_url( $url ) . '" class="post-page-numbers">';
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -14,16 +14,16 @@ class Tests_Post_Template extends WP_UnitTestCase {
|
|||||||
|
|
||||||
setup_postdata( get_post( $post_id ) );
|
setup_postdata( get_post( $post_id ) );
|
||||||
|
|
||||||
$permalink = sprintf( '<a href="%s">', get_permalink() );
|
$permalink = sprintf( '<a href="%s" class="post-page-numbers">', get_permalink() );
|
||||||
$page2 = _wp_link_page( 2 );
|
$page2 = _wp_link_page( 2 );
|
||||||
$page3 = _wp_link_page( 3 );
|
$page3 = _wp_link_page( 3 );
|
||||||
|
|
||||||
$expected = "<p>Pages: 1 {$page2}2</a> {$page3}3</a></p>";
|
$expected = '<p class="post-nav-links">Pages: <span class="post-page-numbers current" aria-current="page">1</span> ' . $page2 . '2</a> ' . $page3 . '3</a></p>';
|
||||||
$output = wp_link_pages( array( 'echo' => 0 ) );
|
$output = wp_link_pages( array( 'echo' => 0 ) );
|
||||||
|
|
||||||
$this->assertEquals( $expected, $output );
|
$this->assertEquals( $expected, $output );
|
||||||
|
|
||||||
$before_after = " 1 {$page2}2</a> {$page3}3</a>";
|
$before_after = " <span class=\"post-page-numbers current\" aria-current=\"page\">1</span> {$page2}2</a> {$page3}3</a>";
|
||||||
$output = wp_link_pages(
|
$output = wp_link_pages(
|
||||||
array(
|
array(
|
||||||
'echo' => 0,
|
'echo' => 0,
|
||||||
@ -34,7 +34,7 @@ class Tests_Post_Template extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEquals( $before_after, $output );
|
$this->assertEquals( $before_after, $output );
|
||||||
|
|
||||||
$separator = " 1{$page2}2</a>{$page3}3</a>";
|
$separator = " <span class=\"post-page-numbers current\" aria-current=\"page\">1</span>{$page2}2</a>{$page3}3</a>";
|
||||||
$output = wp_link_pages(
|
$output = wp_link_pages(
|
||||||
array(
|
array(
|
||||||
'echo' => 0,
|
'echo' => 0,
|
||||||
@ -46,7 +46,7 @@ class Tests_Post_Template extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEquals( $separator, $output );
|
$this->assertEquals( $separator, $output );
|
||||||
|
|
||||||
$link = " <em>1</em>{$page2}<em>2</em></a>{$page3}<em>3</em></a>";
|
$link = " <span class=\"post-page-numbers current\" aria-current=\"page\"><em>1</em></span>{$page2}<em>2</em></a>{$page3}<em>3</em></a>";
|
||||||
$output = wp_link_pages(
|
$output = wp_link_pages(
|
||||||
array(
|
array(
|
||||||
'echo' => 0,
|
'echo' => 0,
|
||||||
@ -107,7 +107,7 @@ class Tests_Post_Template extends WP_UnitTestCase {
|
|||||||
$this->assertEquals( $next_prev_link, $output );
|
$this->assertEquals( $next_prev_link, $output );
|
||||||
|
|
||||||
$GLOBALS['page'] = 1;
|
$GLOBALS['page'] = 1;
|
||||||
$separator = "<p>Pages: 1 | {$page2}2</a> | {$page3}3</a></p>";
|
$separator = "<p class=\"post-nav-links\">Pages: <span class=\"post-page-numbers current\" aria-current=\"page\">1</span> | {$page2}2</a> | {$page3}3</a></p>";
|
||||||
$output = wp_link_pages(
|
$output = wp_link_pages(
|
||||||
array(
|
array(
|
||||||
'echo' => 0,
|
'echo' => 0,
|
||||||
@ -117,7 +117,7 @@ class Tests_Post_Template extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEquals( $separator, $output );
|
$this->assertEquals( $separator, $output );
|
||||||
|
|
||||||
$pagelink = " Page 1 | {$page2}Page 2</a> | {$page3}Page 3</a>";
|
$pagelink = " <span class=\"post-page-numbers current\" aria-current=\"page\">Page 1</span> | {$page2}Page 2</a> | {$page3}Page 3</a>";
|
||||||
$output = wp_link_pages(
|
$output = wp_link_pages(
|
||||||
array(
|
array(
|
||||||
'echo' => 0,
|
'echo' => 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user