get_the_posts_pagination()WP 4.1.0

Получает ссылки пагинации на след./пред. сет постов. Используется на страницах архивов (рубрики, метки).

Например, если на странице выводится по 10 записей и в рубрике всего 50 записей, то get_the_posts_pagination() выведет ссылки на 5 страниц:

Ссылки пагинации в теме Twenty Fifteen
Ссылки пагинации в теме Twenty Fifteen

Чтобы вывести результат на экран используйте the_posts_pagination().

Работает на основе: paginate_links(), _navigation_markup()
Основа для: the_posts_pagination()
Хуки из функции

Возвращает

Строку. HTML код ссылок пагинации. Если страниц пагинации нет, то вернет пустую строку.

Использование

get_the_posts_pagination( $args );
$args(массив)

Аргументы отвечающие за вывод пагинации. По умолчанию устанавливаются следующие аргументы:

$args = array(
	'show_all'           => false, // показаны все страницы участвующие в пагинации
	'end_size'           => 1,     // количество страниц на концах
	'mid_size'           => 1,     // количество страниц вокруг текущей
	'prev_next'          => true,  // выводить ли боковые ссылки "предыдущая/следующая страница".
	'prev_text'          => __('« Previous'),
	'next_text'          => __('Next »'),
	'add_args'           => false, // Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
	'add_fragment'       => '',     // Текст который добавиться ко всем ссылкам.
	'screen_reader_text' => __( 'Posts navigation' ),
	'aria_label'         => __( 'Posts' ), // aria-label="" для nav элемента. С WP 5.3
	'class'              => 'pagination',  // class="" для nav элемента. С WP 5.5
);

Параметр передается в функцию paginate_links(), поэтому полный список аргументов смотрите там.
По умолчанию: предустановки

Примеры

0

#1 Выводим ссылки пагинации

Допустим, нам нужно на странице архивов вывести ссылки пагинации на сеты постов (/page/1, /page/2), тогда с версии 4.1 мы может использовать такой код:

<?php echo get_the_posts_pagination(); ?>

Вернет:

<nav class="navigation pagination" role="navigation">
	<h2 class="screen-reader-text">Навигация по записям</h2>
	<div class="nav-links"><span class="page-numbers current"><span class="meta-nav screen-reader-text">Страница </span>1</span>
		<a class="page-numbers" href="http://example.com/page/2/"><span class="meta-nav screen-reader-text">Страница </span>2</a>
		<span class="page-numbers dots">…</span>
		<a class="page-numbers" href="http://example.com/page/86/"><span class="meta-nav screen-reader-text">Страница </span>86</a>
		<a class="page-numbers" href="http://example.com/page/87/"><span class="meta-nav screen-reader-text">Страница </span>87</a>
		<a class="next page-numbers" href="http://example.com/page/2/">Следующая страница</a>
	</div>
</nav>

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

Список изменений

С версии 4.1.0 Введена.
С версии 5.3.0 Added the aria_label parameter.
С версии 5.5.0 Added the class parameter.

Код get_the_posts_pagination() WP 6.5.2

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;
}