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?
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
.
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.
Une approche consiste à utiliser la variable de requête cpage
:
if ( ! empty( get_query_var( 'cpage' ) ) ) {
// There is more than one page of comments.
}