If you have a very popular blog it might be worth dividing your comments into pages for easier viewing. Fortunately there is a WordPress plugin called Paged Comments to do just that, thanks to Keyvan Minoukadeh. However it needs a bit of tweaking to work on your site.
Installing and configuring
- Download and extract plugin files to a folder locally.
- You can change the number of posts per page and some other useful settings by editing the paged-comments-config-sample.php file (its all fairly well explained in the file), then save the file as paged-comments-config.php.
- Upload the whole paged-comments directory to /wp-content/plugins/ and enable the plugin through the WordPress admin interface.
Template hacking (yuck)
- We need to include the comment ‘pager’ in our template. If you are using a common theme, it might already be taken care of: just go to /wp-content/plugins/paged-comments/themes, open your theme folder, and then copy the comments-paged.php file there into your theme folder at /wp-content/themes
- If you are not using any of the themes listed in /wp-content/plugins/paged-comments/themes then go to your theme and copy the comments.php file to comments-paged.php
We will then modify the comments-paged.php as follows:
In the code at the start
<?php // Do not delete these lines if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!');
change comments.php to comments-paged.php
To add the pager, place this code
<!-- Comment page numbers --> <?php if ($paged_comments->pager->num_pages() > 1): ?> <p class="comment-page-numbers"><?php _e("Pages:"); ?> <?php paged_comments_print_pages(); ?></p> <?php endif; ?> <!-- End comment page numbers -->
before the <ol class="commentlist"> line and again after the </ol> marking the end of it
If you want to make comment number visible on the blog, add this line of code
<div class="comment-number"><?php echo $comment_number; $comment_number += $comment_delta;?></div>
You can add it anywhere between <?php foreach ($comments as $comment) : ?> and <?php endforeach; / end for each comment / ?>, but the best place is probably before the author name (<cite><?php comment_author_link() ?></cite>). In practice, this hasn’t worked too well for me, so use with caution.