get_next_posts_link()WP 2.7.0

Получает HTML-ссылку на список ранее опубликованных постов внутри текущего запроса (ссылка пагинации).

Так как посты обычно сортируются в обратном хронологическом порядке (поздние посты показываются раньше), get_next_posts_link() обычно направляет к поздним постам. Если нужно получить ссылку к ранним (последним) постам, то используйте противоположную функцию get_previous_posts_link(), которая направляет на более новые (последние) посты.

Работает на основе: next_posts(), get_next_posts_page_link()
Хуки из функции

Возвращает

Строку|null. HTML-ссылку если её удалось получить или null.

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

get_next_posts_link( $label, $max_page );
$label(строка)
Текст ссылки. По умолчанию "следующая страница »" (Next Page »).
По умолчанию: __( 'Next Page »' )
$max_page(число)
Ограничение, количество страниц на которых ссылка будет выводиться. По умолчанию 0 - без ограничения.
По умолчанию: $wp_query->max_num_pages

Примеры

0

#1 Базовое использование

<?php echo get_next_posts_link(); ?>
0

#2 Произвольные текст ссылки

<?php echo get_next_posts_link('На следующую страницу'); ?>
0

#3 Произвольный текст и количество страниц

<?php echo get_next_posts_link('На следующую страницу', 4); ?>
0

#4 Использование вместе с произвольным циклом WP_Query

Добавьте параметр $max_pages, когда создаете цикл с помощью WP_Query. Чтобы получить количество всех страниц, можно использовать свойство "max_num_pages" объекта WP_Query:

<?php
// определим текущую страницу пагинации
// используйте параметр 'page' вместо paged на главной странице, если она статическая
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

// запрос: выводим посты из категории 1
$the_query = new WP_Query( 'cat=1&paged=' . $paged );

if ( $the_query->have_posts() ){

	// Цикл
	while ( $the_query->have_posts() ){
		$the_query->the_post(); // устанавливаем глобальную переменную $post
		the_title();
	}

	// get_next_posts_link() с ограничением страниц (второй параметр)
	echo get_next_posts_link( 'Ранние записи', $the_query->max_num_pages );
	echo get_previous_posts_link( 'Новые записи' );

	// Очищаем глобальные переменные
	wp_reset_postdata();

} else {
	echo '<p>Не найдено постов, подходящих под запрос.</p>';
}
?>

Заметки

  • Global. int. $paged
  • Global. WP_Query. $wp_query WordPress Query object.

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

С версии 2.7.0 Введена.

Код get_next_posts_link() WP 6.5.2

function get_next_posts_link( $label = null, $max_page = 0 ) {
	global $paged, $wp_query;

	if ( ! $max_page ) {
		$max_page = $wp_query->max_num_pages;
	}

	if ( ! $paged ) {
		$paged = 1;
	}

	$next_page = (int) $paged + 1;

	if ( null === $label ) {
		$label = __( 'Next Page &raquo;' );
	}

	if ( ! is_single() && ( $next_page <= $max_page ) ) {
		/**
		 * Filters the anchor tag attributes for the next posts page link.
		 *
		 * @since 2.7.0
		 *
		 * @param string $attributes Attributes for the anchor tag.
		 */
		$attr = apply_filters( 'next_posts_link_attributes', '' );

		return sprintf(
			'<a href="%1$s" %2$s>%3$s</a>',
			next_posts( $max_page, false ),
			$attr,
			preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label )
		);
	}
}