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+!

  • Dino

    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!

  • http://secondavenuesagas.com Ben K.

    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.

  • milo

    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

  • Pingback: Daily Design Links for 9-25-08 » Anidan Design

  • http://www.shanestrong.com Shane Strong

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

    • John

      How do you pull the avatar instead of the name?

  • http://www.joshstauffer.com/ Josh Stauffer

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

  • http://girlsaloudblog.com/ Hayley

    Thanks have been googling for days looking for this!

  • TAGABUKID

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

  • Pingback: Tanpa Pena » Blog Archive » Membuat “Komentar Terbaru” Di Template Wordpress

  • Cosmin

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

  • http://www.scotiasystems.com Scotia Systems

    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.

  • Mats

    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.

    • Samuel Musarika

      You can add the dots before the tag that should work.

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

      PS. Thanks very much for this great code it helped me design a theme that was less plugin dependent :)

  • chris

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

    • Samuel Musarika

      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

        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! :)

  • http://www.cell-systems.net KillerSneak

    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.

  • http://tek3d.org/ Tek3D

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

  • Damion

    This worked like a charm!! Thanks!!

  • v

    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?

  • spor merkezleri

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

  • Pingback: Add Customized Recent Comments to WordPress « Jakebelfry's Internet Marketing Blog

  • Pingback: Add Customized Recent Comments to WordPress « Jakebelfry's Internet Marketing Blog

  • Pingback: Add Customized Recent Comments to WordPress « Jakebelfry's Internet Marketing Blog

  • razor.harrison

    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?

  • abz

    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

      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

      ..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

        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?

  • dudd

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

    thank’s

  • http://www.andol.info andol

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

  • http://popsicles.ph James

    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

      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.

      • John

        Can you please share your code? I’d like to replace the names with avatars.

  • http://popsicles.ph popsicles

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

  • Suman

    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!

  • Santiago

    How can i only display 5 comments?

    • http://kyleeslick.com Kyle Eslick

      Change LIMIT 10 to LIMIT 5 :)

  • peter

    Thanks, good recent comments script! :)

  • Luis

    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

  • John

    Anyway to show the avatars instead of the names?

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

  • http://www.tatilyerlerim.biz/ Tatil Yerleri

    Thanks have been googling for days looking for this…

  • http://buckinspire.com Buck

    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!

  • http://sevensomewhere.com Clare

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

  • http://www.css3files.com Christian Krammer

    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!

  • http://viaestvita.net/ anton

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

  • http://viaestvita.net/ anton

    for good work with the plugin qtranslate
    must be replaced

    $comment->post_title

    on

    __($comment->post_title)

  • Pingback: Reading up on “comments” again « Feet up, eyes closed, head back

  • nicole

    thanks a lot!!!! :D

  • Dennis

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

  • Subash Ghimire

    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 :(

  • http://www.simplesites4u.com Danny Jones

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

  • http://ijustutter.com Mrina

    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.

  • michael kane

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