web-dev-qa-db-fra.com

Comment vérifier si les commentaires sont paginés?

J'essaie de déterminer s'il y a plus d'une page de commentaires dans single.php.

Dans archive.php, je peux faire quelque chose comme ceci pour vérifier s'il y a plus d'une page de messages:

if ( $wp_query->max_num_pages > 1 ) { 
    // There's more than one page of posts in this archive.
}

Autant que je sache, cela ne fonctionne pas pour les commentaires. Comment puis-je vérifier si les commentaires sont paginés dans single.php?

1
henrywright

Juste quelques informations supplémentaires pour la requête de commentaire principale:

Puisque vous avez mentionné l'objet global $wp_query, nous pouvons voir qu'il stocke:

$wp_query->max_num_comment_pages = $comment_query->max_num_pages;

dans la requête de commentaire principale dans le modèle de commentaires.

Il existe un wrapper pour cela, à savoir:

get_comment_pages_count(); 

disponible après la requête de commentaire principale.

Si nous en avons besoin avant que la requête de commentaire principale ne soit exécutée, nous pourrions vérifier si get_comments_number( $post_id ) est supérieur à get_option( 'comments_per_page' ). Mais il ne faut pas oublier que le paramètre comments_per_page peut être modifié, par exemple. le filtre comments_template_query_args.

1
birgire

Essayez ceci, get_option( 'page_comments' ) vérifiera si la pagination est cochée dans options> discussion, puis nous comparons les commentaires par page (get_query_var( 'comments_per_page' )) au nombre total de commentaires trouvés de la publication (compte):

function wpse231229_is_paginate_comments( $post_id = 0 ) {
    return get_option( 'page_comments' )  && ( $pagi = (int) get_query_var( 'comments_per_page' ) ) && wp_count_comments( $post_id )->total_comments > $pagi;
}

De plus, pour obtenir la page actuelle de commentaires (par exemple comment-page-1 dans l'URL ..), utilisez (int) get_query_var( 'cpage' )

J'espère que cela pourra aider.

1
Samuel Elh

Une approche consiste à utiliser la variable de requête cpage:

if ( ! empty( get_query_var( 'cpage' ) ) ) {
    // There is more than one page of comments.
}
1
henrywright