web-dev-qa-db-ja.com

スレッドコメント番号を取得

私はGregのThreaded Comment Numberingプラグインを使ってコメントに番号を付けています。実際、私はそれぞれの親コメントの横に番号を表示しています(スレッドコメント番号はありません)。私はすでに解決しようとしている2つの問題がありますが、結果は出ていません。

  • 一番上のコメントを別のレイアウトで表示しています。番号付けを#2から始める必要があります。簡単な作業のようですが、プラグインコードを修正する方法が見つかりませんでした。

  • スレッドを持つ各コメントについて、スレッド化されたコメントの総数を表示します。

例:

コメント1

------------ 1.1

------------ 1.2

------------ 1.3

合計スレッドコメント= 3

コメント2

------------ 2.1

------------ 2.2

合計スレッドコメント= 2

等.....

私はすでに親の総数を取得するために以下のコードを使用しています。子も取得できますが、合計です。例のように、各コメントの子の数を表示する必要があります。

$number_of_parents = c_parent_comment_counter($post->ID);
$number_of_children = $post->comment_count - $number_of_parents;

ありがとうございます。

編集:ここで要求されているのはwp_list_commentsコールバック関数です。ごめんね申し訳ありませんが、私はプログラマではありません、作業が終了したらコードを消去します:)

## Function: Basic Callback Function From WP Codex (http://codex.wordpress.org/Template_Tags/wp_list_comments), January 2009
function gtcn_basic_callback($comment, $args, $depth) {
// no changes here except that we have added in the call to gtcn_comment_numbering
   $GLOBALS['comment'] = $comment; 


   ?>
   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
   <?php   if( empty( $comment->comment_parent ) ) { //if the comment does not have a parent, then it is L1?>
            <div class="linguetta-posizione"><?php  echo gtcn_comment_numbering($comment->comment_ID, $args); 

            ?></div>        
                <?php   }
         ?>

     <div id="comment-<?php comment_ID(); ?>">
      <div class="comment-author vcard">
        <div class="comment-barra-user">

            <div class="comment-avatar">
            <?php if( empty( $comment->comment_parent ) ) { ?><?php echo get_avatar($comment,$size='60'); ?><?php } else { ?><?php echo get_avatar($comment,$size='30'); ?><?php } ?></div>
            <div class="comment-username"><?php printf(('<cite class="fn">%s</cite> '), get_comment_author_link()) ?><br class="clear"/>
                <?php if( empty( $comment->comment_parent ) ) { ?><div id="comment-container-points">
                    <div class="comment-points"><img src="<?php bloginfo('template_url'); ?>/images/ico-points.png" /><a>3333</a></div><div class="comment-level"><img src="<?php bloginfo('template_url'); ?>/images/ico-level.png" /><a>livello</a></div>
                </div>      <?php } else { ?><?php } ?>         
            </div>
            <?php if ( is_user_logged_in() ) { if( empty( $comment->comment_parent ) ) {?>
            <div class="comment-votazione"><h2>Vota la risposta:</h2>

            <?php    { //if the comment does not have a parent, then it is L1
                    if(function_exists(ckrating_display_karma)) { ckrating_display_karma(); }
                    }
         ?> </div>
            <?php }} else { 

                if( empty( $comment->comment_parent ) ) { ?>
                <div class="comment-votazione"><h2>Registrati per votare</h2>

                 </div>
            <?php }}  ?> 


        </div><!-- end BARRA USER -->

    <br class="clear"/>

      </div>
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>


      <?php comment_text() ?>

      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('reply_text' => 'COMMENTA LA RISPOSTA', 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div><div class="comment-meta commentmetadata"><?php if( empty( $comment->comment_parent ) ) { ?>Risposta inserita<?php } else { ?> Commento inserito <?php } ?>
            <?php echo time_ago_comment(); ?><?php edit_comment_link(('- modifica'),'  ','') ?></div>

     </div></li>

<?php
} // end basic callback function
2
Andycap
// inside your callback function:
static $ancestors = null;
$parent = (int) $comment->comment_parent;

// Modify INITIAL VALUE here:
$init_val = (int) 1;

$is_child = false;
if ( $parent > (int) 0 )
{
    $is_child = true;
    $ancestors[] = $parent;
    $child_counter = count( $ancestors ) + $init_val;
}
/*
 * Only needed in case you want to reset the counter if the current comment has no children
else
{
    $ancestors = $child_counter = null;
}
*/

// This shows the number of the current reply counter
if ( $is_child ) 
    printf( __( 'This is the child number: ', TEXTDOMAIN ), $child_counter );
2
kaiser