# get_the_posts_pagination() │ WP 4.1.0
Функция get_the_posts_pagination() позволяет получить навигацию для перехода на следующую или предыдущую страницу постов, если это применимо. Это полезно, если у вас много записей, и вы хотите их распределить по страницам.
### Использует
- paginate_links()
- _navigation_markup()
### Используется в
- the_posts_pagination()
## Хуки функции
- the_posts_pagination_args
## Возвращает
Строку с разметкой для ссылок навигации.
## Использование
```php
get_the_posts_pagination( $args );
Параметры $args (массив)
Этот параметр является необязательным.
По умолчанию: параметры для постраничной навигации, см. paginate_links()
- screen_reader_text (строка): Текст для экранных считывателей на элементе навигации. По умолчанию: 'Пагинация постов'.
- aria_label (строка): Текст ARIA для элемента навигации. По умолчанию: 'Пагинация постов'.
- class (строка): Пользовательский класс для элемента навигации. По умолчанию: 'pagination'.
Примеры
Пример 1: Использование
$pagination = get_the_posts_pagination( [
'mid_size' => 2,
'prev_text' => __( 'Новые', 'textdomain' ),
'next_text' => __( 'Старые', 'textdomain' ),
] );
Параметр $args, переданный в paginate_links(), также может быть дополнительно настроен. Вот значения по умолчанию:
$args = array(
'base' => '%_%',
'format' => '?paged=%#%',
'total' => 1,
'current' => 0,
'show_all' => false,
'end_size' => 1,
'mid_size' => 2,
'prev_next' => true,
'prev_text' => __('« Назад'),
'next_text' => __('Вперед »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => ''
);
$pagination = get_the_posts_pagination( $args );
Пример 2: Вывод
Предположим, нам нужно отобразить ссылки постраничной навигации на странице архивов, используйте следующий код:
Это отобразит следующий HTML-код:
Примечания
- Глобальная:
WP_Query. Объект WordPress Query.
Изменения
- С 4.1.0: Введена функция.
- С 5.3.0: Добавлен параметр
aria_label. - С 5.5.0: Добавлен параметр
class.
Код функции get_the_posts_pagination
function get_the_posts_pagination( $args = array() ) {
global $wp_query;
$navigation = '';
// Не выводить пустую разметку, если только одна страница.
if ( $wp_query->max_num_pages > 1 ) {
// Убедимся, что элемент навигации имеет атрибут aria-label: используем текст для экранных считывателей.
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( 'Назад', 'предыдущий набор постов' ),
'next_text' => _x( 'Вперед', 'следующий набор постов' ),
'screen_reader_text' => __( 'Пагинация постов' ),
'aria_label' => __( 'Пагинация постов' ),
'class' => 'pagination',
)
);
/**
* Фильтрует параметры для ссылок постраничной навигации.
*
* @since 6.1.0
*
* @param array $args {
* Необязательные параметры для пагинации, см. paginate_links().
*
* @type string $screen_reader_text Текст для экранных считывателей.
* По умолчанию 'Навигация постов'.
* @type string $aria_label ARIA метка для элемента навигации.
* По умолчанию 'Пагинация постов'.
* @type string $class Пользовательский класс для элемента навигации.
* По умолчанию 'pagination'.
* }
*/
$args = apply_filters( 'the_posts_pagination_args', $args );
// Убедимся, что получаем строку в ответе. Plain – это лучший вариант.
if ( isset( $args['type'] ) && 'array' === $args['type'] ) {
$args['type'] = 'plain';
}
// Устанавливаем постраничные ссылки.
$links = paginate_links( $args );
if ( $links ) {
$navigation = _navigation_markup( $links, $args['class'], $args['screen_reader_text'], $args['aria_label'] );
}
}
return $navigation;
}
Связанные функции
_navigation_markup()get_next_posts_page_link()get_posts_nav_link()get_previous_posts_page_link()get_the_comments_navigation()get_the_comments_pagination()get_the_post_navigation()get_the_posts_navigation()posts_nav_link()the_comments_navigation()the_comments_pagination()the_post_navigation()the_posts_navigation()the_posts_pagination()