get_next_posts_link() — возвращает ссылку на следующую страницу пагинации, с более старыми записями

Функция get_next_posts_link() работает только внутри цикла WordPress. Смотрите мой видеоурок по циклам.

Предположим, у нас есть 15 страниц с записями. Мы находимся на 8-й странице. Данная функция вернет ссылку на 9-ю страницу. Если же нам нужно попасть на 7-ю страницу, тогда используем get_previous_posts_link().

get_next_posts_link( $label = null, $max_page = 0 )

Параметры

$label
(строка) Текст ссылки. По умолчанию Next Page » (Следующая страница →).
$max_page
(целое число) Максимальное количество отображаемых страниц. Предположим, всего у вас 15 страниц с постами, если в качестве значения данного параметра вы установите 11, то при помощи ссылки «следующая страница» вы сможете дойти только до 11-й страницы, потом ссылка исчезнет. Но на самом деле задача параметра немного в другом – не в том, чтобы ограничивать количество ссылок для вывода, а в том, чтобы не выводить ссылки на страницы, на которых уже нет постов. В качестве значения по умолчанию используется $wp_query->max_num_pages.

Функция возвращает HTML ссылки на следующую страницу с записями.

  • Если находимся на последней странице (с самыми старыми постами), или же срабатывает условный тег is_single(), то ничего не возвращает.
  • Если хотите сразу вывести ссылку, то можете воспользоваться функцией next_posts_link().
  • Обычно возвращает HTML ссылки на более старые посты, потому что по умолчанию они сортируются в обратном хронологическом порядке.
  • Если вам нужно вывести пагинацию с номерами страниц, обратите внимание на paginate_links().

Пример

echo get_next_posts_link( 'Туда →' );

Пример произвольной пагинации для цикла на WP_Query

Подробнее про создание циклов при помощи WP_Query в моём видеоуроке.

// определяем текущую страницу, на которой находимся
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
 
// запускаем дополнительный цикл
$q = new WP_Query( "cat=5&paged=$paged" );
 
if ( $q->have_posts() ) :
	// выводим заголовки постов
	while ( $q->have_posts() ) : $q->the_post();
		the_title( '<h2>', '</h2>' );
 
	endwhile;
 
	// в функцию get_next_posts_link() обязательно передаём max_num_pages.
	echo get_next_posts_link( 'Туда &rarr;', $q->max_num_pages );
	echo get_previous_posts_link( '&larr; Сюда' );
 
	wp_reset_postdata(); 
 
endif;

Фильтр-хук next_posts_link_attributes позволяет добавить какие-либо HTML-атрибуты на ссылку. Например давайте попробуем добавить target="_blank" и rel="nofollow".

add_filter( 'next_posts_link_attributes', 'true_add_next_link_attrs' );
 
function true_add_next_link_attrs( $attr ) {
	$attr = 'target="blank" rel="nofollow"';
	return $attr;
}

Не знаете, куда вставлять код?

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!