get_posts_nav_link()WP 2.8.0

Получает ссылки на предыдущую и следующую страницы записей на странице архива (категории/метки/автора).

Используется для вставки ссылок пагинации (< назад - вперед >) для страниц архивов.

Когда нужно вывести результат на экран, используйте posts_nav_link()

Работает на основе: get_previous_posts_link(), get_next_posts_link()
Основа для: posts_nav_link()

Хуков нет.

Возвращает

Строку. HTML ссылок навигации по страницам архивов.

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

$links_html = get_posts_nav_link( $args );
$args(строка/массив)

Параметры для создания ссылок навигации.

  • sep(string)
    Текст между ссылок - разделитель.
    По умолчанию: '—'

  • prelabel(string)
    Текст (анкор) ссылки для предыдущего поста.
    По умолчанию: __('« Previous Page')

  • nxtlabel(string)
    Текст (анкор) ссылки для следующего поста.
    По умолчанию: __('Next Page »')

По умолчанию: array()

Примеры

0

#1 Демонстрация того, что выводит функция

echo $links_html = get_posts_nav_link();

Выведет:

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

#2 Разместим ссылки по середине и передадим параметры

Для этого обернем их в DIV и укажем ему свойство text-align:center

<?php
$links_html = get_posts_nav_link(array(
	'sep' => ' . ',
	'prelabel' => 'Предыдущая страница',
	'nxtlabel' => 'Следующая страница'
));

echo "<div style=\"text-align:center;\">$links_html</div>";
?>
0

#3 Вместо текстов: «Предыдущая страница», «Следующая страница», можно использовать картинки

$links_html = get_posts_nav_link(array(
	'sep' => ' . ',
	'prelabel' => '<img src="' . get_stylesheet_directory_uri() . '/images/prev.jpg" />',
	'nxtlabel' => '<img src="' . get_stylesheet_directory_uri() . '/images/next.jpg" />'
));

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

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

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

Код get_posts_nav_link() WP 6.7.1

function get_posts_nav_link( $args = array() ) {
	global $wp_query;

	$return = '';

	if ( ! is_singular() ) {
		$defaults = array(
			'sep'      => ' &#8212; ',
			'prelabel' => __( '&laquo; Previous Page' ),
			'nxtlabel' => __( 'Next Page &raquo;' ),
		);
		$args     = wp_parse_args( $args, $defaults );

		$max_num_pages = $wp_query->max_num_pages;
		$paged         = get_query_var( 'paged' );

		// Only have sep if there's both prev and next results.
		if ( $paged < 2 || $paged >= $max_num_pages ) {
			$args['sep'] = '';
		}

		if ( $max_num_pages > 1 ) {
			$return  = get_previous_posts_link( $args['prelabel'] );
			$return .= preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $args['sep'] );
			$return .= get_next_posts_link( $args['nxtlabel'] );
		}
	}
	return $return;
}