如何获取5条最新评论和每条评论5条最新回复(儿童)

时间:2016-07-08 作者:UXTE

我想以降序获得5条最新评论和每条评论的5条最新回复(儿童)。使用下面的代码,我可以获得5条最新的评论,但它无法区分评论和回复,从而生成一个独立于其“类型”(评论或回复)的评论列表。我该怎么做?

<?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 ); ?> 

1 个回复
SO网友:knif3r

要列出最近(5)条注释,可以使用以下代码:

$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;
?>
它将输出此HTML标记中的注释:

<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>
但我不确定你如何列出评论的孩子们。。也许像这样的东西应该会给你第一个最新的评论回复,但你必须调整它才能工作:

$args = array(
    \'status\' => \'approve\', 
    \'number\' => \'5\',
    \'post_id\' => $post_id,
    \'parent\' => $parrent

);
$comments = get_comments($args);