質問: Wordpressで構築しているサイトで、ユーザが投稿したコメントの表示順と表示数の調整がうまくいかずに悩んでいます。 実現したいこと ------- 例えば、ある投稿ページに対して、ユーザーから25個のコメントがあったとします。 1を最も古い投稿、25が最新のコメントという状態です。 やりたいことは、このコメント欄の表示のされ方を 1ページ目:25,24,23,22,21,20,19,18,17,16 2ページ目:16,15,14,13,12,11,10,9,8,7,6 3ページ目:5, 4, 3, 2, 1 という順番に表示されるようにしたいと思っています。 現在の状態 ----- 現在、 私のWPの設定画面では、 ⬜︎1ページあたり10件のコメントを含む複数ページに分割し、のページをデフォルトで表示する にチェックがあり、 <古い>コメントを各ページのトップに表示する というように設定されています。 結果は 1ページ目:25,24,23,22,21 2ページ目:20,19,18,17,16,15,14,13,12,11 3ページ目:10,9,8,7,6,5, 4, 3, 2, 1 このような状態です。 現在のコード ------ ``` 【comments.php】 '口コミを投稿する', 'label_submit' => '口コミを送信する', 'fields' => array( 'author' => '' . '', ), 'comment_field' => '' . '', ); comment_form( $args ); ?> 投稿された口コミ '10','reverse_top_level' => true)); ?> 1) : ?> ``` 参考サイト ----- http://motoyamayuki.com/blog/2015/07/22/comment_pagination/ このサイトを見ながら操作してみましたが、このサイトのような結果にはなりません。 もし解決策が思い浮かぶ方はぜひアドバイスをお願いします。
回答: テーマのコメント表示部分のコードが不明なので関数の紹介だけになりますが`wp_list_comments`を使ってみてはどうでしょうか。 `per_page`で表示件数、`reverse_top_level`で表示順が指定できます。 参考サイトの方法を試した時の状態がわからないので現状のコードと参考サイトの情報から推測になります。 ``` //comments.php '10','reverse_top_level' => true)); ?> ↓ ``` として`wp_list_comments`のパラメータ指定を無しにする ``` //function.php function wp_desc_comments($comments) { return array_reverse($comments); //var_dump(count($comments)); } add_filter ('comments_array', 'wp_desc_comments'); ``` function.phpに参考サイトの通りフィルターを使ってコメントを逆順にする 「ディスカッション」設定→”古い”コメントを各ページのトップに表示する これで参考サイトと同じ設定になるかと思いますので、ダメな場合はfucntion.phpでコメントしている`var_dump(count($comments));`のコメントを外して数値がいくつになるか確認してみてください `25`(コメントの総数)であればこれで問題ないと思うのですが`10`や`5`等が返ってくる場合は`comments_array`の仕様が変わっているかもしれません。