posts_nav_link()
Выводит навигацию по страницам записей — ссылки на предыдущую и следующую страницу архива, если они существуют.
Может пригодится для того, чтобы снабдить архивы ссылками навигации.
Функцию обычно размещают после цикла 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(), чтобы получить результат в переменную, а не выводить на экран.
Чтобы получить ссылки на предыдущий/следующий посты в отдельности используйте:
Хуков нет.
Возвращает
null.
Использование
<?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?>
- $sep(строка)
- Текст отображаемый между ссылок.
По умолчанию: ' — ' - $prelabel(строка)
- Текст (анкор) ссылки для предыдущего поста.
По умолчанию: __('« Previous Page') - $nxtlabel(строка)
- Текст (анкор) ссылки для следующего поста.
По умолчанию: __('Next Page »')
Примеры
#1 В качестве анкоров ссылок можно использовать картинки, например так:
<?php posts_nav_link( ' ', '<img src="' . get_stylesheet_directory_uri() . '/images/prev.jpg" />', '<img src="' . get_stylesheet_directory_uri() . '/images/next.jpg" />' ); ?>
#2 HTML который выводит функция
<?php posts_nav_link( $sep, $prelabel, $nextlabel ); ?>
Выведет:
<a href="ссылка">« Предыдущая страница</a> — <a href="ссылка">Следующая страница »</a>
#3 Чтобы отцентрировать (показать по середине страницы) используйте такой код:
<div style="text-align:center;">
<?php posts_nav_link(' · ', 'Предыдущая страница', 'Следующая страница'); ?>
</div> #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() 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 );
}