By default, most WordPress themes display Recent Comments in some form or another. Unfortunately, it isn’t usually very user-friendly, so it will often get removed.

Until now, most of your other options required the use of a WordPress plugin, but today I ran across a great code snippet you can use to display recent comments in a useful format. I just tested it out on my test site and it looks good. Here is the code you will want to paste into your theme’s sidebar:

<h2>Recent Comments</h2>
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"on " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?>

[via WordPress Garage]

Want automatic updates? Subscribe to our RSS feed or
Get Email Updates sent directly to your inbox!
Tweet This | Digg This | Stumble it | Add to Del.icio.us | | Print This

Kyle Eslick

Kyle Eslick is the founder and primary author of WordPress Hacks. You can learn more about him at KyleEslick.com or you can follow his personal tweets here.

There Are 19 Responses So Far »

  1. Dino says:

    Wow, that is extremely helpful. I’ve been using plugins for the recent comments and I think it’s also included in the default sidebar widgets.

    Thanks for the code!

  2. Ben K. says:

    So here’s my question: Is there a way to highlight new comments on site? I’m running a site that gets a lot of comments an readers have asked for a way to know which ones are new and which ones aren’t. I’m not up on my coding of cookies and such to do that.

  3. milo says:

    Instead of calling the WP db base directly:

    - backup all files
    - select a recent post plugin (a simple one)
    - cut and paste the pi code in to your theme functions file
    - check if all is in same order like original file
    - save it
    - insert the php call in your desired template file

  4. Shane Strong says:

    Thanks for the great code needed it for my new design. I am pulling the avatar of the commenter on my home page.

  5. Has this method for displaying recent comments changed much since this post was originally written?

  6. Hayley says:

    Thanks have been googling for days looking for this!

  7. TAGABUKID says:

    Great. I almost quit googling for this one. Thank you so much,

  8. Cosmin says:

    Thanks for this. I see however, that the commenter name is not linking to his specified website…?

  9. Perfect – just what I’m looking for. Trying to avoid adding too many plugins as it makes upgrading wordpress harder. Better if I can just code it in directly.

  10. Mats says:

    Does anyone know how i can add … to the end of the 30 characters (or how many you want to display) rather than just cutting of a word? Doesn’t look that good I would say.

  11. chris says:

    thank you for the trick. is it possible to control the excerpt so that it will display more text.

    • Samuel Musarika says:

      Yes there is a way, you can change the number 30 to any number you would like. I think that represents the characters to display. I am not sure about the 1 so if I were you, I would leave that alone. Hope this helps.

      SUBSTRING(comment_content,1,30) AS com_excerpt

      • Tim says:

        Hi Samuel,

        You seem to know your stuff. This code has really helped me and I’ve nearly got it perfect but I really am trying to find out how to end the ‘excerpt’ on the last *word* rather than just characters – as in one example the last character is an apostrophe which echoes out as the ascii equivalent – eg. &#…etc. Any ideas? I would also need to know exactly where to put the code if anybody does reply…

        Thanks! :)

  12. KillerSneak says:

    Thanks allot for the code using it at my website.

    I wonder if you could do the same for ping and trackbacks. For some reason the default recent comments gives me Ping/Trackbacks and comments inside the same Recent comments (reason i use the code posted here) it would be nice to have a seperate box for the ping/track backs as well.

  13. Tek3D says:

    It worked well on my site. Thanks so much :)

  14. Damion says:

    This worked like a charm!! Thanks!!

  15. v says:

    Hello! Thank you for posting this! I’ve been trying to display 1 recent comment for a specific post on my homepage (within a multiple loop) Is there a way to modify the snippet to do so?

  16. Thanks for the great code needed it for my new design. I am pulling the avatar of the commenter on my home page.

Trackbacks/Pingbacks »

Leave a Reply