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]

Kyle Eslick is WordPress enthusiast who took his passion for WordPress to the next level in 2007 by launching WPHacks.com as a place to share hacks, tutorials, etc. Connect with Kyle on Twitter or Google+!

  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. spor merkezleri says:

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

  17. razor.harrison says:

    Hi,

    I have a site and have used this code which is very helpful. However, I am wondering if you could please tell me how I could filter results based on category as well? So I only want to display recent posts within a certain category?

  18. abz says:

    Thanks for the code works like a charm, even managed to style it in css. I just need to know how to get the php to display the date aswell as the page title the comments being retrieved from. At the moment only the author and comment is displayed.

    Thanks again

    Keep up the good work

    • Suman says:

      Give this a try! :)

      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”;
      foreach ($comments as $comment) {
      $output .= “n” . “ID) .
      “#comment-” . $comment->comment_ID . “” title=”on” .
      $comment->post_title . “”>” . strip_tags($comment->com_excerpt) .
      “…
      ” . strip_tags($comment->comment_author) .
      “, said on ” . strip_tags($comment->comment_date_gmt) .””;
      }
      $output .= “n”;
      $output .= $post_HTML;
      echo $output;?>

    • Suman says:

      ..my bad, sorry for the earlier one! give this a try, hope this works!

      <?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,60) 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>" . "<a href="" . get_permalink($comment->ID) .
      "#comment-" . $comment->comment_ID . "" title="on" .
      $comment->post_title . "">" . strip_tags($comment->com_excerpt) .
      "…</a><br />" . strip_tags($comment->comment_author) .
      ", said on " . strip_tags($comment->comment_date_gmt) ."</li>";
      }
      $output .= "n</ul>";
      $output .= $post_HTML;
      echo $output;?>

      • John says:

        Thanks, Suman. However, that code shows the date in an unattractive format (i.e. 2010-04-23 15:48:34).

        Is there a way to simply display it as 4/23/2010?

  19. dudd says:

    thank’s for this code, please, how can i filter comments on specific category ?

    thank’s

  20. andol says:

    thanks, this really helps me out of wordpress 3.0 bugs.

  21. James says:

    hello, instead of putting the to the excerpt of the comment I wanted it to be place into the authors name. How could I possible do that?

    and how can I add the avatar of the commenter? great code!

    • Samuel Musarika says:

      Hey did you figure out how to do the avatar. I have an updated code and it is more flexible and it does have avatars.

  22. popsicles says:

    oh, i got it already. my only problem now is to add gravatar on it.

  23. Suman says:

    Hi, thanks for the great code and that works fine! I think I’m trying to be a bit silly but I desperately need it, I wonder how have you displayed the date on the format as on your recent comments when I tried to get it through comment_date_gmt, I can not pass any strings to formate the date and time!

  24. Santiago says:

    How can i only display 5 comments?

  25. peter says:

    Thanks, good recent comments script! :)

  26. Luis says:

    Hi, I used it on my blog, using WordPress 3, works fine, but does not bring the Title of the POst where the comment was made on … do you know how can i fix this..??
    Thanks a lot !!
    Luis

  27. John says:

    Anyway to show the avatars instead of the names?

    I’m guessing something has to be changed here: $comment->comment_author

  28. Thanks have been googling for days looking for this…

  29. Buck says:

    Hi there,

    I’m a newbie. Just curious, where do you paste this code? I see an editor, but not exactly sure where to place it and don’t want to break anything.

    Also, is there a way to filter out the admin (me)? I reply to comments and want to just focus on visitor’s comments.

    Thanks!

  30. Clare says:

    Works a treat – and simple too. The previous “recipe” I found was trying to edit the functions file and it was all very complicated!

  31. Thanks for your great work. I searched very long for a simple way to display the comments AND link them to the right posts. I am very glad that I found your solution. Thank you very much!

  32. anton says:

    Thank you! Very useful
    just does not work with the plugin qtranslate

  33. anton says:

    for good work with the plugin qtranslate
    must be replaced

    $comment->post_title

    on

    __($comment->post_title)

  34. nicole says:

    thanks a lot!!!! :D

  35. Dennis says:

    is there any way to change the time zone to (‘F j, Y H:i a’) (GMT+05:30) New Delhi India.

  36. Subash Ghimire says:

    well, this is very helpful and i need a help from you guys to add a flash drop down menu on my site. please help me :(

  37. Danny Jones says:

    Very useful indeed! Perfect job! thanks for taking the time to post this

  38. Mrina says:

    This is good. However; I was looking at this page and couldn’t stop myself falling in love with “Recent Comment Box” you have on sidebar. It have everything I need for my blog. This came with theme or is modified? Can I get some help to get it for my blog?

    Thanks.

  39. michael kane says:

    This code is still work on the newest version of WP??

Trackbacks/Pingbacks »

  1. Tanpa Pena » Blog Archive » Membuat “Komentar Terbaru” Di Template Wordpress says: