93 lines
3.6 KiB
PHP
93 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* Pagination layout
|
|
*
|
|
* @package understrap
|
|
*/
|
|
|
|
// Exit if accessed directly.
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
if ( ! function_exists( 'understrap_pagination' ) ) {
|
|
/**
|
|
* Displays the navigation to next/previous set of posts.
|
|
*
|
|
* @param string|array $args {
|
|
* (Optional) Array of arguments for generating paginated links for archives.
|
|
*
|
|
* @type string $base Base of the paginated url. Default empty.
|
|
* @type string $format Format for the pagination structure. Default empty.
|
|
* @type int $total The total amount of pages. Default is the value WP_Query's
|
|
* `max_num_pages` or 1.
|
|
* @type int $current The current page number. Default is 'paged' query var or 1.
|
|
* @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 bool $show_all Whether to show all pages. Default false.
|
|
* @type int $end_size How many numbers on either the start and the end list edges.
|
|
* Default 1.
|
|
* @type int $mid_size How many numbers to either side of the current pages. Default 2.
|
|
* @type bool $prev_next Whether to include the previous and next links in the list. Default true.
|
|
* @type bool $prev_text The previous page text. Default '«'.
|
|
* @type bool $next_text The next page text. Default '»'.
|
|
* @type string $type Controls format of the returned value. Possible values are 'plain',
|
|
* 'array' and 'list'. Default is 'array'.
|
|
* @type array $add_args An array of query args to add. Default false.
|
|
* @type string $add_fragment A string to append to each link. Default empty.
|
|
* @type string $before_page_number A string to appear before the page number. Default empty.
|
|
* @type string $after_page_number A string to append after the page number. Default empty.
|
|
* @type string $screen_reader_text Screen reader text for the nav element. Default 'Posts navigation'.
|
|
* }
|
|
* @param string $class (Optional) Classes to be added to the <ul> element. Default 'pagination'.
|
|
*/
|
|
function understrap_pagination( $args = array(), $class = 'pagination' ) {
|
|
|
|
if ( ! isset( $args['total'] ) && $GLOBALS['wp_query']->max_num_pages <= 1 ) {
|
|
return;
|
|
}
|
|
|
|
$args = wp_parse_args(
|
|
$args,
|
|
array(
|
|
'mid_size' => 2,
|
|
'prev_next' => true,
|
|
'prev_text' => __( '«', 'understrap' ),
|
|
'next_text' => __( '»', 'understrap' ),
|
|
'type' => 'array',
|
|
'current' => max( 1, get_query_var( 'paged' ) ),
|
|
'screen_reader_text' => __( 'Posts navigation', 'understrap' ),
|
|
)
|
|
);
|
|
|
|
$links = paginate_links( $args );
|
|
if ( ! $links ) {
|
|
return;
|
|
}
|
|
|
|
?>
|
|
|
|
<nav aria-labelledby="posts-nav-label">
|
|
|
|
<h2 id="posts-nav-label" class="sr-only">
|
|
<?php echo esc_html( $args['screen_reader_text'] ); ?>
|
|
</h2>
|
|
|
|
<ul class="<?php echo esc_attr( $class ); ?>">
|
|
|
|
<?php
|
|
foreach ( $links as $key => $link ) {
|
|
?>
|
|
<li class="page-item <?php echo strpos( $link, 'current' ) ? 'active' : ''; ?>">
|
|
<?php echo str_replace( 'page-numbers', 'page-link', $link ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
</li>
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
<?php
|
|
}
|
|
}
|