注释在多页上进行编号

时间:2013-02-10 作者:George Grigorita

当我的评论扩展到多页时,我对它们的编号有问题。在新页面上,编号从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) 注释的编号从每个新页面开始。

1 个回复
最合适的回答,由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. 此外,确定第一个数字的算法也会有所不同。

结束

相关推荐

如何使用从wp_Comments(SQL GROUP BY)返回的评论计数来更新wp_post

我正在做一个从某人的定制CMS到WP安装的特殊迁移。我成功地将帖子和评论迁移到各自的表中。现在,我需要将每个匹配id的评论计数放入wp\\u posts表中。我很接近,我想:SELECT COUNT(comment_content) AS total_comments, comment_post_ID AS commentID FROM wp_comments GROUP BY comment_post_ID; --mysql won\'t let me run the group