Support » Fixing WordPress » Display the page or post title from get_comments

  • I want to be able to show the the most recent 5 comments on my homepage. Using get_comments I can do this and show the comment, author, date etc.

    <?php
    $comments = get_comments('status=approve&number=5');
      foreach($comments as $comm) :?>
     <div class="index_row_entry <?=($i%2)?"color1":"color2";$i++;?>">
    
        Post: HOW CAN I GET THIS?!<br />
        Who: <?php echo($comm->comment_author);?><br />
        What was said: <?php echo($comm->comment_content);?><br />
        Date: <?php echo($comm->comment_date);?><br />
        </div>
      <?php endforeach;?>

    What I want to be able to do is show the title of (and link to) the post or page where the comment was made.

    Any ideas?

Viewing 3 replies - 1 through 3 (of 3 total)
  • Try:

    <?php
    $comments = get_comments('status=approve&number=5');
      foreach($comments as $comm) :?>
     <div class="index_row_entry <?=($i%2)?"color1":"color2";$i++;?>">
    
        Post: <strong><?php echo get_the_title($comm->comment_post_ID);?></strong><br />
        Who: <?php echo($comm->comment_author);?><br />
        What was said: <?php echo($comm->comment_content);?><br />
        Date: <?php echo($comm->comment_date);?><br />
        </div>
      <?php endforeach;?>

    That uses the comment_post_ID field from the $comm array and passes it to the get_the_title function. For a fancier look, including a link to the comment permalink, use:

    <a href="<?php echo get_permalink($comm->comment_post_ID);?>#comment-<?php comment_ID() ?>"><?php echo get_the_title($comm->comment_post_ID);?></a>

    Hope that helps.

    i would also like to know how to do this. the above response doesn’t work, as comment_post_ID isn’t in the get_comments() array.

    there was a typo in the code by @mtw28 which might have stopped the code from working fully.

    comment_post_ID id indeed part of the wpdb comments table:
    http://codex.wordpress.org/Database_Description#Table:_wp_comments

    the fixed code below works for me:

    <?php
    $comments = get_comments('status=approve&number=5');
      foreach($comments as $comm) :?>
     <div class="index_row_entry">
    
        Comment on: <strong><a href="<?php echo get_permalink($comm->comment_post_ID); ?>"><?php echo get_the_title($comm->comment_post_ID); ?></a></strong><br />
        <?php echo($comm->comment_author);?>: <?php echo($comm->comment_content);?><br />
        <?php echo($comm->comment_date);?><br />
        </div>
      <?php endforeach;?>

    ps:
    if you want to know all elements of the get_comments() result, try and use:

    <?php $comments = get_comments('status=approve&number=5');
    print_r($comments); ?>

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Display the page or post title from get_comments’ is closed to new replies.