Функция get_comment_pages_count() в WordPress: использование и примеры

Функция get_comment_pages_count() │ WP 2.7.0

Функция get_comment_pages_count() используется для вычисления общего количества страниц комментариев. Это полезно, если вам нужно разделить комментарии на несколько страниц.

Возвращаемое значение

Int: количество страниц с комментариями.

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

get_comment_pages_count( $comments, $per_page, $threaded );

Параметры

  • $comments (WP_Comment[]) — массив объектов комментариев. По умолчанию: $wp_query->comments
  • $per_page (int) — количество комментариев на странице. По умолчанию: значение переменной comments_per_page или 1 (в этом порядке).
  • $threaded (true|false) — управление тем, будут ли комментарии показаны в виде дерева (под комментарии). По умолчанию: значение опции thread_comments.

Примеры

Пример 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: Использование функции вне цикла комментариев

Если вы используете функцию вне цикла комментариев, необходимо указать параметр $comments, содержащий массив комментариев для подсчета. Этот массив можно получить с помощью класса WP_Comment_Query.

$args = array(
    // параметры запроса здесь
);

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

$pages = get_comment_pages_count( $comments );

Заметки

  • Глобальная переменная: WP_Query. $wp_query — объект запроса WordPress.

Изменения

  • С версии 2.7.0: введена функция.

Код функции get_comment_pages_count()

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;
}

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

  • Пагинация комментариев (навигация)
    • get_comments_pagenum_link()
    • get_next_comments_link()
    • get_page_of_comment()
    • get_previous_comments_link()
    • get_the_comments_navigation()
    • next_comments_link()
    • paginate_comments_links()
    • previous_comments_link()
    • the_comments_navigation()
    • the_comments_pagination()

Эти функции помогут вам управлять отображением и навигацией по комментариям в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *