最后一个评论页面第一个有完整数量的评论?

时间:2011-04-03 作者:Richard B

我使用分页和线程注释:

每页10条评论,最后一条评论排在第一位,最新评论排在第一位如果总共有21条评论,第一页只包含1条评论-最新评论。如何获得总是显示在第一页上的最新10条评论?

我正在使用WordPress 3.0.3编辑:升级到3.1,问题仍然存在。。。

编辑:忘记添加我正在使用的代码。我对列出的评论使用回调,如下所示:

function mytheme_comment($comment, $args, $depth) {
$GLOBALS[\'comment\'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
    <div id="comment-<?php comment_ID(); ?>" class="comment">

        <?php if(function_exists(\'hkTC_comment_title\'))
            hkTC_comment_title($comment->comment_ID,\'<strong class="comment-title">\',\'</strong>\');
        ?>

        <?php comment_text() ?>

        <span class="written-by">
            Skrivet av:
            <?php
            $commentAuthID = get_comment(get_comment_ID())->user_id;
            echo the_author_meta(\'first_name\',$commentAuthID)." ";
            echo the_author_meta(\'last_name\',$commentAuthID);
            ?>
            <em>kl. <?php echo get_comment_time(\'H.i\'); ?>, den <?php echo get_comment_date(\'j F Y\'); ?></em>
        </span>

        <div class="reply">
            <?php comment_reply_link(array_merge( $args, array(\'depth\' => $depth, \'max_depth\' => $args[\'max_depth\']))) ?>
        </div>
    </div>
    <?php }
hkTC\\U comment\\u title函数来自此插件,我也在使用此插件:http://wordpress.org/extend/plugins/hikari-title-comments/但我认为这不应该影响评论的数量。

编辑:这是我的自定义模板,用于显示包含注释的页面:http://123.writeboard.com/4x2m38ifvnkrct7l

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

这确实是WordPress的默认行为。评论始终保持在同一个评论页面上,因此,如果您首先显示最后一个评论页面,则最后一个评论页面将不总是有“完整”数量的评论。将注释始终保持在同一个注释页面上的优点是URL始终保持不变,否则添加新注释时,注释可以移动到另一个页面。

但这很烦人,我也需要解决这个问题。我发现没有(容易?)通过WordPress挂钩实现这一点的方法,因此我通过阅读cpage (注释页)查询变量。注意这个变量,因为WordPress对reverse it for you 当您将“第一个/最后一个评论页面第一个”设置为“最后一个”时。

此代码位于comments.php 主题文件,因为它读取全局变量$comments. 我没有使用注释回调(这是非常简单的代码),但您仍然可以传递新切片的$comments_to_display 阵列到wp_list_comments() 作为第二个参数,它将使用该参数而不是所有注释。我不知道这将如何处理线程评论(它们如何处理“正常”页面评论?)。

$comments_to_display = $comments;

/*
 * Display the comments over pages, with the newest comments on the first page
 * Special in this code (not in WP by default) is that the first page will contain 5 comments,
 * and the final page can contain less comments.
 */
$comments_per_page = 5; // MAYBE: use get_option()?
$comment_page = get_query_var( \'cpage\' );
$comment_this_page_start = 0;
$comment_this_page_count = $comments_per_page;
$oldest_comment_page_count = count( $comments_to_display ) % $comments_per_page;
if ( 0 == $oldest_comment_page_count ) {
    $oldest_comment_page_count = $comments_per_page;
}
if ( 1 == $comment_page ) {
    $comment_this_page_count = $oldest_comment_page_count;
} else {
    $comment_this_page_start = $oldest_comment_page_count + ($comment_page - 2) * $comments_per_page;
}
$comments_to_display = array_slice( $comments_to_display, $comment_this_page_start, $comment_this_page_count );
// You probably want to array_reverse() $comments_to_display, currently it shows the oldest on top.
// Then you should be able to pass $comments_to_display to wp_list_comments() and it will use your shorter array instead.

结束

相关推荐

Wp_Comments中的其他字段有什么用途?

我正在开发一个相当奇怪的实现,它稍微扩展了WP的限制-这是一个医疗保健网站,患者是一个自定义的帖子类型,与每个患者相关的程序请求存储在该帖子的评论中。我从在commentmeta中存储大量数据开始,但我希望有一种比从元表中提取数据更简单的方法来访问它。我还希望能够在可用的情况下使用内置功能(wp_insert_comment 可以通过传递给wp\\U comments表的参数设置该表中的大多数字段)。我的问题是,在WordPress中,这些其他值在哪里设置和访问?具体而言,我很好奇:我想设置一个元值,我希