WordPress как на ладони

paginate_comments_links()WP 2.7.0

Выводит список ссылок на страницы комментариев (ссылки пагинации), текущего поста.

С версии 2.7. WordPress разработчиками был упрощен шаблон комментариев (файл comments.php), чтобы было проще создавать и редактировать отображение комментариев. Одним из таких улучшений стала возможность разделять комментарии на страницы и теперь посетителям не нужно подгружать сотни комментариев на одной странице, а можно сделать постраничную навигацию комментариев.

Включить разделение комментариев на несколько страниц (пагинацию комментариев) можно на странице админ-панели Настройки > Обсуждение.

После того, как разделение включено в системе, ссылки навигации по страницам комментариев можно вывести таким кодом:

<?php paginate_comments_links(); ?>

Аналогом такой пагинации являются функции next_comments_link() и previous_comments_link(), которые выводят ссылки на следующую и предыдущую страницу комментариев.

Почти такая же функция-аналог: the_comments_pagination()

Работает на основе: paginate_links()
Основа для: get_the_comments_pagination()

Хуков нет.

Возвращает

null|Строку|Массив.

  • Ничего - если параметр echo = true и type не array. Или когда функция вызвана не на странице поста (т.е. комментов у страницы быть не может).
  • HTML ссылок пагинации при echo = false.
  • Массив ссылок пагинации при type = array|plain|list.

Шаблон использования

paginate_comments_links( [
	'base'    => add_query_arg( 'cpage', '%#%' ),
	'format'  => null,
	'total'   => $max_page,
	'current' => $page,
	'echo'    => true,
	'add_fragment' => '#comments',
] );

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

<?php paginate_comments_links( $args ) ?>
$args(строка/массив)

Аргументы на основе которых будет получен результат.

Описание параметров смотрите в функции paginate_links(), она является ядром этой функции.

По умолчанию: предустановки

Примеры

0

#1 Вывод постраничной навигации комментариев

Если в настройках установлено "разделять комментарии на страницы", то в шаблоне используется такой код чтобы вывести навигацию:

<div class="navigation"><?php paginate_comments_links( $args ) ?></div>

В итоге мы получим подобный код:

<div class="navigation">
	<a class="prev page-numbers" href="/id_140/comment-page-3#comments">«««</a>
	<a class='page-numbers' href='/id_140/comment-page-1#comments'>1</a>
	<a class='page-numbers' href='/id_140/comment-page-2#comments'>2</a>
	<a class='page-numbers' href='/id_140/comment-page-3#comments'>3</a>
	<span class='page-numbers current'>4</span>
</div>
0

#2 Изменение текстов ссылок "следующая/предыдущая страница"

Чтобы изменить тексты ссылок следующая/предыдущая страница, функции нужно передать аргументы prev_text и next_text

paginate_comments_links('prev_text=back&next_text=forward')

Если в текстах ссылок нужно использовать специальные html символы (html сущности), то аргументы нужно передавать через массив:

paginate_comments_links( [
	'prev_text' => '«', 
	'next_text' => '»'
] );

Заметки

  • Смотрите: paginate_links()
  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

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

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

Код paginate_comments_links() WP 6.5.2

function paginate_comments_links( $args = array() ) {
	global $wp_rewrite;

	if ( ! is_singular() ) {
		return;
	}

	$page = get_query_var( 'cpage' );
	if ( ! $page ) {
		$page = 1;
	}
	$max_page = get_comment_pages_count();
	$defaults = array(
		'base'         => add_query_arg( 'cpage', '%#%' ),
		'format'       => '',
		'total'        => $max_page,
		'current'      => $page,
		'echo'         => true,
		'type'         => 'plain',
		'add_fragment' => '#comments',
	);
	if ( $wp_rewrite->using_permalinks() ) {
		$defaults['base'] = user_trailingslashit( trailingslashit( get_permalink() ) . $wp_rewrite->comments_pagination_base . '-%#%', 'commentpaged' );
	}

	$args       = wp_parse_args( $args, $defaults );
	$page_links = paginate_links( $args );

	if ( $args['echo'] && 'array' !== $args['type'] ) {
		echo $page_links;
	} else {
		return $page_links;
	}
}
3 комментария
    Войти