每个帖子只有最后一条评论

时间:2014-11-14 作者:Epsiloncool

假设我有5篇帖子,其中放置了最新的评论。我怎样才能在每个帖子中得到一条评论?我想使用get\\u comments()。有可能吗?

Post1: Comment 1
       Comment 6
Post2: Comment 2
Post3: Comment 5
       Comment 7
Post4: Comment 3
       Comment 4
Post5: Comment 8
结果应如下所示:

Comment8
Comment7
Comment6
Comment4
Comment2

1 个回复
最合适的回答,由SO网友:birgire 整理而成

构造SQL查询:

您可以尝试以下操作:

/**
 * Fetch comments\' IDs for the most recently commented posts 
 * (only one comment per post)
 *
 * @param  integer $count
 * @return array  
 */

function get_cids_wpse ( $count = 5 )
{
    global $wpdb;
    $sql = "SELECT MAX( comment_ID ) as cid 
            FROM {$wpdb->comments} 
            GROUP BY comment_post_ID
            ORDER BY cid DESC
            LIMIT 0, %d"; 
    return $wpdb->get_cols( $wpdb->prepare( $sql, $count ) );
}
其中,我假设注释的日期与ID的顺序相同。如果您的设置不是这样,那么我们需要进一步调整。

用法示例:

如果我们需要获得每篇文章的最后5条评论,我们可以使用:

$cids = get_cids_wpse( 5 );
$comments = array();
foreach( (array) $cids as $cid )
{
    $comments[] = get_comment( $cid );
}
或此设置:

$args = array(
    \'include\'     => get_cids_wpse( 5 );,
    \'orderby\'     => \'_include\',           //<-- custom parameter
);

$comments = get_comments( $args );
我们使用的位置this code snippet 按包含值排序。

注意:您还可以进一步扩展此示例,添加更多注释db字段,然后使用get_results() 方法而不是get_col(). 然后,您将只使用一个db查询来获取所有注释数据。

结束

相关推荐

comments in Admin

我对管理员中帖子的评论部分实际上做了什么感到困惑。我在帖子的屏幕选项中打开了评论。当我显示帖子时,我会看到一个评论框。如果我在评论框中输入了什么,它会发生什么?当我在管理中单击“显示评论”时,我从未看到它。但在某些主题上,它会出现在帖子中。