paginate_comment_links()
actually does some magic setup for comments and then calls the standard wordpress paginate_links()
. I believe that part of that magic utilizes the result of wp_list_comments()
.
So even though your code is works great – you cannot use the built-in paginate comments functionallity because you are not using wp_list_comments()
. And you can’t use that function since it only gets comments for a specific post or page which is not what you are trying to do anyways…
The solution is to use paginate_links() as that method is actually very flexible. In order to do this you need to know 2 things – what page you are on, and how many pages there are total. To accommodate this, we need to get all comments from get_comments()
which isn’t optimal but we work with what we’ve got. Here is a mental picture of what the code might look like (completely untested so no warranty – sorry):
<?php
$comments_per_page = 5;
$current_page = max( 1, get_query_var('paged') );
global $current_user;
get_currentuserinfo();
$userid = $current_user->ID;
$args = array('user_id' => $userid, 'number' => 0);
$comments = get_comments($args);
$total_comments = count($comments);
$total_pages = (($total_comments - 1) / $comments_per_page) + 1;
$start = $comments_per_page * ($current_page - 1);
$end = $start + $comments_per_page;
// Might be good to test and make sure there are comments for the current page at this point!
for($i = $start; $i < $end; $i++) {
echo('<br />' . $comment->comment_date . '<br />' . $comment->comment_content);
}
if($total_pages > 1) {
$args = { 'total'=>$total_pages, 'current'=>$current_page };
paginate_links($args);
}
?>
That probably isn’t perfect but it should help get you pointing the right direction. The only ugly part is that we are reading all comments with the query instead of limiting it to only the comments on the page we want – but we don’t have another good way to get the number of comments that exist for the user as (get_comment_count
is post based).