get_comment_pages_count()WP 2.7.0

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

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

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

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

Хуков нет.

Возвращает

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

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

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

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

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

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

Примеры

0

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

$pages = get_comment_pages_count();
0

#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 );
0

#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 );

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

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

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

Код get_comment_pages_count() WP 6.7.1

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 (int) $count;
}