I want to get the 5 most recent comments and each comment's 5 most recent replies (children) in descending order. With the following code I can get the 5 most recents comments but it won't distinguish comments from replies which results in a list of comments independently of their 'type' (comment or reply). How can I do this?
<?php
$comments = get_comments(array(
'post_id' => $id,
'status' => 'approve',
'number' => '5' //Number of comments
));
if ( have_comments() ) : ?>
<?php $args = array(
'walker' => null,
'max_depth' => '2',
'style' => 'div',
'callback' => customComment, // templates/comment-template.php
'end-callback' => null,
'type' => 'all',
'reply_text' => 'Reply',
'page' => '',
'per_page' => '',
'avatar_size' => 32,
'reverse_top_level' => false,
'reverse_children' => false,
'format' => 'html5', // or 'xhtml' if no 'HTML5' theme support
'short_ping' => false, // @since 3.6
'echo' => true // boolean, default is true
); ?>
<?php wp_list_comments( $args ); ?>
I want to get the 5 most recent comments and each comment's 5 most recent replies (children) in descending order. With the following code I can get the 5 most recents comments but it won't distinguish comments from replies which results in a list of comments independently of their 'type' (comment or reply). How can I do this?
<?php
$comments = get_comments(array(
'post_id' => $id,
'status' => 'approve',
'number' => '5' //Number of comments
));
if ( have_comments() ) : ?>
<?php $args = array(
'walker' => null,
'max_depth' => '2',
'style' => 'div',
'callback' => customComment, // templates/comment-template.php
'end-callback' => null,
'type' => 'all',
'reply_text' => 'Reply',
'page' => '',
'per_page' => '',
'avatar_size' => 32,
'reverse_top_level' => false,
'reverse_children' => false,
'format' => 'html5', // or 'xhtml' if no 'HTML5' theme support
'short_ping' => false, // @since 3.6
'echo' => true // boolean, default is true
); ?>
<?php wp_list_comments( $args ); ?>
To list the most recent (5) comments you can use this code :
$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,50) // NUMBER OF CHARACTERS
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 5"; // NUMBER OF COMMENTS
$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->comment_author)
.":<br/><div>" . strip_tags($comment->com_excerpt)
."</div></a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;
?>
It will output the comments in this HTML markup :
<ul>
<li>
<a href="http://domain.tld/post#comment-01" title="on Post Title">Comment Author:<br />
<div>This is the first 50 characters of the first most recent comment</div></a>
</li>
<li>
<a href="http://domain.tld/post#comment-01" title="on Post Title">Comment Author:<br />
<div>This is the first 50 characters of the first most recent comment</div></a>
</li>
<li>
<a href="http://domain.tld/post#comment-01" title="on Post Title">Comment Author:<br />
<div>This is the first 50 characters of the first most recent comment</div></a>
</li>
<li>
<a href="http://domain.tld/post#comment-01" title="on Post Title">Comment Author:<br />
<div>This is the first 50 characters of the first most recent comment</div></a>
</li>
<li>
<a href="http://domain.tld/post#comment-01" title="on Post Title">Comment Author:<br />
<div>This is the first 50 characters of the first most recent comment</div></a>
</li>
</ul>
But I am not sure how you can list the comment's children.. Maybe something like this should give you the first latest comment reply but you will have to tweak it in order to work :
$args = array(
'status' => 'approve',
'number' => '5',
'post_id' => $post_id,
'parent' => $parrent
);
$comments = get_comments($args);