web-dev-qa-db-ja.com

コメントが改ページされているかどうかを確認するにはどうすればいいですか?

私はsingle.phpに複数ページのコメントがあるかどうかを判断しようとしています。

Archive.phpでは、私はこのようなことをして、複数ページの投稿があるかどうかをチェックすることができます。

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

私が言うことができる限り、これはコメントには機能しません。コメントがsingle.phpでページ分割されているかどうかをどうやって確認できますか?

1
henrywright

メインコメントクエリに関する追加情報がいくつかあります。

グローバルな$wp_queryオブジェクトについて言及したので、それが格納されていることがわかります。

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

コメントテンプレートのメインのコメントクエリで。

これには、 ラッパー があります。

get_comment_pages_count(); 

これはメインのコメントクエリの後に利用可能です。

メインのコメントクエリが実行される前にそれが必要な場合は、get_comments_number( $post_id )get_option( 'comments_per_page' )よりも大きいかどうかをチェックします。しかし、comments_per_pageパラメータは、次のように変更することができます。 comments_template_query_argsフィルタ.

1
birgire

試してみてください。get_option( 'page_comments' )はoptions> discussionでページネーションがチェックされているかどうかチェックし、それからページごとのコメント(get_query_var( 'comments_per_page' ))を現在の投稿の総コメント(count)と比較します:

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

また、現在のページのコメント(URLのcomment-page-1など)を取得するには、(int) get_query_var( 'cpage' )を使用します。

それが役立つことを願っています。

1
Samuel Elh

1つの方法は、cpageクエリ変数を使用することです。

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