我使用分页和线程注释:
每页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
最合适的回答,由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.