posts_nav_link()WP 0.71

Выводит навигацию по страницам записей — ссылки на предыдущую и следующую страницу архива, если они существуют.

Может пригодится для того, чтобы снабдить архивы ссылками навигации.

Функцию обычно размещают после цикла WP_Query в файлах архивов (index.php, archive.php и т.д.). Она автоматически выводит HTML-ссылки «назад/вперёд» на основе глобального $wp_query, поэтому дополнительных настроек не требует.

Работает только на страницах списка записей - в одиночной записи (is_singular()) ничего не выведет.

Выводится лишь при количестве страниц > 1, иначе вернёт пустую строку.

Используйте эту функцию, когда нужна простая пара ссылок. В остальных случаях лучше использовать the_posts_navigation() — это более современный вариант вариант.

Разница с the_posts_navigation()

the_posts_navigation() — это современная, аксессабилити-дружественная оболочка вокруг той же логики «следующая/предыдущая страница архива», тогда как posts_nav_link() — её минималистичный предшественник.

  • HTML-каркас
    posts_nav_link() — просто две ссылки подряд.
    the_posts_navigation() — семантический <nav class="navigation posts-navigation"> + классы для CSS и a11y.

  • Доступность
    Старая функция не добавляет текста для скрин-ридеров; новая вставляет screen_reader_text.

  • Автопроверка страниц
    the_posts_navigation() сама скрывается, если страниц одна.
    posts_nav_link() выводит даже пустую строку, проверку нужно делать вручную.

Используйте get_posts_nav_link(), чтобы получить результат в переменную, а не выводить на экран.

Чтобы получить ссылки на предыдущий/следующий посты в отдельности используйте:

Работает на основе: get_posts_nav_link()

Хуков нет.

Возвращает

null.

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

<?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?>
$sep(строка)
Текст отображаемый между ссылок.
По умолчанию: ' — '
$prelabel(строка)
Текст (анкор) ссылки для предыдущего поста.
По умолчанию: __('« Previous Page')
$nxtlabel(строка)
Текст (анкор) ссылки для следующего поста.
По умолчанию: __('Next Page »')

Примеры

2

#1 В качестве анкоров ссылок можно использовать картинки, например так:

<?php
posts_nav_link(
	' ',
	'<img src="' . get_stylesheet_directory_uri() . '/images/prev.jpg" />',
	'<img src="' . get_stylesheet_directory_uri() . '/images/next.jpg" />'
);
?>
0

#2 HTML который выводит функция

<?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?>

Выведет:

<a href="ссылка">« Предыдущая страница</a> — <a href="ссылка">Следующая страница »</a>
0

#3 Чтобы отцентрировать (показать по середине страницы) используйте такой код:

<div style="text-align:center;">
	<?php posts_nav_link(' · ', 'Предыдущая страница', 'Следующая страница'); ?>
</div>
0

#4 Альтернатива этой функции

В некоторых случаях лучше использовать две функции: previous_posts_link() и next_posts_link():

<div class="navigation">
	<div class="alignleft"><?php previous_posts_link( '« Предыдущие записи' ); ?></div>
	<div class="alignright"><?php next_posts_link( 'Следующие записи »', '' ); ?></div>
</div>

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

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

Код posts_nav_link() WP 6.9

function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
	$args = array_filter( compact( 'sep', 'prelabel', 'nxtlabel' ) );
	echo get_posts_nav_link( $args );
}
3 комментария