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

get_comment_pages_count() WP 2.7

Подсчитывает количество страниц комментариев у поста (на сколько страниц разбиты комментарии).

Позволяет посчитать сколько страниц комментариев получится, если учитывать количество комментариев на страницу и их древовидный вывод.

Обычно эту функцию не используют перед началом цикла комментариев.

Функцию можно использовать за пределами цикла. Тогда, нужно указать параметр $comments, и $per_page, $threaded по необходимости.

Хуков нет.

Возвращает

Число. Количество страниц комментариев.

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

get_comment_pages_count( $comments, $per_page, $threaded );
$comments(массив)
Массив объектов с комментариями. По умолчанию используется глобальная переменная $wp_query->comments.
По умолчанию: null
$per_page(число)
Сколько комментариев выводить на одну страницу. По умолчанию берется из настроек.
По умолчанию: null
$threaded(логический)

Учитывать древовидность комментариев или нет. По умолчанию берется из настроек. Может быть:

  • false - не учитывать, считать каждый комментарий.
  • true - учитывать дерево комментариев, считать все дерево как один комментарий.

По умолчанию: null

Примеры

#1. Пример использования функции в цикле:

$pages = get_comment_pages_count();

#2. Пример использования произвольных параметров

Пример выше использует все значения по умолчанию, которые берутся из настроек. А этот пример показывает как работают свои параметры:

// страниц комментариев, если 25 комментариев на страницу.
$pages = get_comment_pages_count( null, 25 );

// страниц комментариев, если не делить комментарии на древовидные.
$pages = get_comment_pages_count( null, null, false ); 

// страниц комментариев, если по 10 на страницу и они древовидные
$pages = get_comment_pages_count( null, 10, true );

3. Использование функции за пределами цикла комментариев

Если функция используется за пределами цикла комментариев, то нужно указать параметр $comment, который содержит массив комментариев для подсчета. Такой массив можно получить по нужным аргументам, с помощью класса: WP_Comment_Query.

Получим комментарии по нужным параметрам и узнаем на сколько страниц они разобьются:

$args = array(
   // query args here
);

$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );

$pages = get_comment_pages_count( $comments );

Код get comment pages count: wp-includes/comment.php VER 4.9.1

<?php
function get_comment_pages_count( $comments = null, $per_page = null, $threaded = null ) {
	global $wp_query;

	if ( null === $comments && null === $per_page && null === $threaded && !empty($wp_query->max_num_comment_pages) )
		return $wp_query->max_num_comment_pages;

	if ( ( ! $comments || ! is_array( $comments ) ) && ! empty( $wp_query->comments )  )
		$comments = $wp_query->comments;

	if ( empty($comments) )
		return 0;

	if ( ! get_option( 'page_comments' ) ) {
		return 1;
	}

	if ( !isset($per_page) )
		$per_page = (int) get_query_var('comments_per_page');
	if ( 0 === $per_page )
		$per_page = (int) get_option('comments_per_page');
	if ( 0 === $per_page )
		return 1;

	if ( !isset($threaded) )
		$threaded = get_option('thread_comments');

	if ( $threaded ) {
		$walker = new Walker_Comment;
		$count = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page );
	} else {
		$count = ceil( count( $comments ) / $per_page );
	}

	return $count;
}

Cвязанные функции

Из метки: Пагинация комментариев (навигация)

Еще из метки: comment (комментарии)

Еще из раздела: Комментарии

get_comment_pages_count Комментариев нет

Здравствуйте, !

Ваш комментарий