Retrieves a paginated navigation to next/previous set of posts, when applicable.
Parameters
$args
arrayoptional- Default pagination arguments, see paginate_links() .
screen_reader_text
stringScreen reader text for navigation element.
Default ‘Posts navigation’.aria_label
stringARIA label text for the nav element. Default'Posts'
.class
stringCustom class for the nav element. Default'pagination'
.
More Arguments from paginate_links( … $args )
Array or string of arguments for generating paginated links for archives.
base
stringBase of the paginated url.format
stringFormat for the pagination structure.total
intThe total amount of pages. Default is the value WP_Query‘smax_num_pages
or 1.current
intThe current page number. Default is'paged'
query var or 1.aria_current
stringThe value for the aria-current attribute. Possible values are'page'
,'step'
,'location'
,'date'
,'time'
,'true'
,'false'
. Default is'page'
.show_all
boolWhether to show all pages. Default false.end_size
intHow many numbers on either the start and the end list edges.
Default 1.mid_size
intHow many numbers to either side of the current pages. Default 2.prev_next
boolWhether to include the previous and next links in the list. Default true.prev_text
stringThe previous page text. Default ‘« Previous’.next_text
stringThe next page text. Default ‘Next »’.type
stringControls format of the returned value. Possible values are'plain'
,'array'
and'list'
. Default is'plain'
.add_args
arrayAn array of query args to add. Default false.add_fragment
stringA string to append to each link.before_page_number
stringA string to appear before the page number.after_page_number
stringA string to append after the page number.
Default:
array()
Source
function get_the_posts_pagination( $args = array() ) {
global $wp_query;
$navigation = '';
// Don't print empty markup if there's only one page.
if ( $wp_query->max_num_pages > 1 ) {
// Make sure the nav element has an aria-label attribute: fallback to the screen reader text.
if ( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) {
$args['aria_label'] = $args['screen_reader_text'];
}
$args = wp_parse_args(
$args,
array(
'mid_size' => 1,
'prev_text' => _x( 'Previous', 'previous set of posts' ),
'next_text' => _x( 'Next', 'next set of posts' ),
'screen_reader_text' => __( 'Posts navigation' ),
'aria_label' => __( 'Posts' ),
'class' => 'pagination',
)
);
/**
* Filters the arguments for posts pagination links.
*
* @since 6.1.0
*
* @param array $args {
* Optional. Default pagination arguments, see paginate_links().
*
* @type string $screen_reader_text Screen reader text for navigation element.
* Default 'Posts navigation'.
* @type string $aria_label ARIA label text for the nav element. Default 'Posts'.
* @type string $class Custom class for the nav element. Default 'pagination'.
* }
*/
$args = apply_filters( 'the_posts_pagination_args', $args );
// Make sure we get a string back. Plain is the next best thing.
if ( isset( $args['type'] ) && 'array' === $args['type'] ) {
$args['type'] = 'plain';
}
// Set up paginated links.
$links = paginate_links( $args );
if ( $links ) {
$navigation = _navigation_markup( $links, $args['class'], $args['screen_reader_text'], $args['aria_label'] );
}
}
return $navigation;
}
Hooks
- apply_filters( ‘the_posts_pagination_args’,
array $args ) Filters the arguments for posts pagination links.
$args
param is passed to the paginate_links() function.Default values: