当我的评论扩展到多页时,我对它们的编号有问题。在新页面上,编号从1开始。此外,在第2页上,pingback/trackback不再出现。
这是我在中使用的代码comments.php
:
<?php if ( have_comments() ) : ?>
<h3 class="com"><span class="com-titlu"><?php comments_number(\'Niciun comentariu\', \'Un comentariu\', \'% comentarii\' );?></span> la: <?php the_title(); ?></h3>
<ol class="commentlist">
<?php wp_list_comments(array(
\'callback\'=>\'advanced_comment\',
\'style\'=>\'ol\',
\'type\'=>\'comment\'
));
?>
</ol>
<?php
if ( $num = t5_count_pings() )
{
?>
<h3 id="pingbacks">
<?php printf( _n( \'One pingback\', \'%d pingbacks\', $num, \'t5_theme\' ), $num ); ?>
</h3>
<ol class="pingback">
<?php wp_list_comments(array (
\'type\' => \'pings\',
\'style\' => \'ul\',
\'callback\' => \'list_pings\'
));
?></ol>
<?php } ?>
这些是我在中使用的函数
functions.php
:
<?php function advanced_comment($comment, $args, $depth) {
$GLOBALS[\'comment\'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
<div class="comment-author vcard">
<?php echo get_avatar($comment,$size=\'48\',$default=\'<path_to_url>\' ); ?>
<div class="comment-meta"<a href="<?php the_author_meta( \'user_url\'); ?>"><?php printf(__(\'%s\'), get_comment_author_link()) ?></a>
<span class="com-date"> a scris pe: <small><?php printf(__(\'%1$s at %2$s\'), get_comment_date(), get_comment_time()) ?><?php edit_comment_link(__(\'(Edit)\'),\' \',\'\') ?></small></span></div>
</div>
<div class="clear"></div>
<?php if ($comment->comment_approved == \'0\') : ?>
<em><?php _e(\'Your comment is awaiting moderation.\') ?></em><br />
<?php endif; ?>
<div class="comment-text">
<?php comment_text() ?>
</div>
<div class="reply">
<?php comment_reply_link(array_merge( $args, array(\'depth\' => $depth, \'max_depth\' => $args[\'max_depth\']))) ?>
</div>
<div class="clear"></div>
<?php } ?>
<?php add_filter(\'get_comments_number\', \'comment_count\', 0);
function comment_count( $count ) {
if ( ! is_admin() ) {
global $id;
$comments_by_type = &separate_comments(get_comments(\'status=approve&post_id=\' . $id));
return count($comments_by_type[\'comment\']);
} else {
return $count;
}
}
?>
<?php
/**
* Count amount of pingbacks + trackbacks for a post.
*
* @param int $post_id Post ID for comment query. Default is current post.
* @return int
*/
function t5_count_pings( $post_id = NULL )
{
$pings = 0;
$comments = FALSE;
if ( NULL !== $post_id )
{
$comments = get_comments(
array (
\'post_id\' => $post_id, # Note: post_ID will not work!
\'status\' => \'approve\'
)
);
}
elseif ( ! empty ( $GLOBALS[\'wp_query\']->comments ) )
{
$comments = $GLOBALS[\'wp_query\']->comments;
}
if ( ! $comments )
return 0;
foreach ( $comments as $c )
if ( in_array ( $c->comment_type, array ( \'pingback\', \'trackback\' ) ) )
$pings += 1;
return $pings;
}
?>
问题:1)trackback和pingback不会出现在每个评论页面上。2) 注释的编号从每个新页面开始。
最合适的回答,由SO网友:david.binda 整理而成
要修复编号,您必须修改第一个代码以通过CSS重置编号。这样(未经测试,但你会明白这个想法;))。
<?php if ( have_comments() ) : ?>
<h3 class="com"><span class="com-titlu"><?php comments_number(\'Niciun comentariu\', \'Un comentariu\', \'% comentarii\' );?></span> la: <?php the_title(); ?></h3>
<?php $number = intval(get_query_var( \'cpage\' )) * intval(get_query_var( \'comments_per_page\' )) - intval( get_query_var( \'comments_per_page\' ) ); ?>
<ol class="commentlist" style="counter-reset: item <?php echo $number; ?>">
<?php wp_list_comments...
获取起始编号所使用的算法的思想是,如果您在第2页上显示每页5条评论,那么您将从6条开始。
而要确定第一个数字,您必须将页码(2)与每页的注释(5)相乘-结果为10。
第一个数字必须是6,因此您必须从结果中减去每页的注释(5),并使用最终结果作为{ counter-reset: item FINAL_RESULT }
CSS从该规则中使用的数字之后的数字开始编号。所以5是可以的。
2*5-5=5=>从6开始
3*5-5=10=>从11开始
如果您需要反向编号,这将更加复杂,因为CSS可能无法提供解决方案。但你可以检查this question and answer. 此外,确定第一个数字的算法也会有所不同。