Je dois afficher les commentaires à partir de la seconde, en omettant le premier. Avec les messages, je l'ai fait en utilisant "offset" mais je ne trouve rien de similaire pour les commentaires. Depuis que j'utilise des commentaires filetés, il faut partir du deuxième commentaire qui n'est pas un enfant (seulement des commentaires de parents). J'utilise wp_list_comments avec un rappel.
EDIT2: c'est le code comments.php, après les réponses:
<?php
$i = 2;
if ( have_comments() ) :
if ( $i > 1 ) :
?>
<div id="comments">
<h3 id="comments-title" class="color-<?php $category = get_the_category(); echo $category[0]->cat_name;?>">
</h3>
<?php
global $wp_query;
$comments_arr = $wp_query->comments;
$comments_arr = sort( $comments_arr);
$comments_arr = array_pop( $comments_arr );
$comments_arr = usort($comment_arr, 'comment_comparator');
wp_list_comments('callback=gtcn_basic_callback', $comments_arr);
?>
<?php
$i++; // count up
endif; // If $i > 1
else : if ( ! comments_open() ) : ?>
<p><?php _e( 'Comments are closed.' ); ?></p>
<?php
endif; // end ! comments_open()
endif; // end have_comments() ?>
</div>
<?php comment_form(); ?>
Résultat: les commentaires ne sont plus classés par karma (fonction comment_comparator) et le premier commentaire (le commentaire avec le karma supérieur que je souhaite masquer) est toujours affiché.
<?php
global $wp_query, $post;
$comments_arr = $wp_query->comments;
$comments_arr = sort( $comments_arr);
$comments_arr = array_pop( $comments_arr );
$comments_arr = usort($comment_arr, 'comment_comparator');
$comment_count = get_comment_count($post->ID);
?>
<h3 id="comments-title"><?php
printf(
_n( 'One Response to %2$s', '%1$s Responses to %2$s', get_comments_number(), 'YOUR_THEMES_TEXTDOMAIN' ),
number_format_i18n( get_comments_number() ),
'<em>' . get_the_title() . '</em>'
);
?></h3>
if ( have_comments() ) :
?><ul class="commentlist"><?php
for ( $i = 0; $i < $comment_count; $i++ )
{
// do stuff:
// This shows you everything you got inside the comments array
// Call it like this: echo $comments_arr[$i]['comment_author'];
var_dump( $comments_arr[$i] );
// end do stuff
} // endforeach;
?></ul><?php
elseif ('open' == $post->comment_status) :
// If there are no comments, but status = open
?><p class="nocomments"><?php _e( 'No Comments.', 'YOUR_THEMES_TEXTDOMAIN' ); ?></p><?php
endif; // If $i > 1
else : // or, if comments are not allowed:
if ( ! comments_open() ) :
?>
<p class="nocomments"><?php _e( 'Comments are closed.', 'YOUR_THEMES_TEXTDOMAIN' ); ?></p>
<?php
endif; // end ! comments_open()
endif; // end have_comments()
?>
Ad votre boucle actuelle:
Pas besoin de $counter = 2;
(appelé nulle part).
Si vous avez déjà reçu votre $comments_arr
, pourquoi ne pas simplement:
$comments_arr = sort( $comments_arr);
$comments_arr = array_pop( $comments_arr );
$comments_arr = usort( $comments_arr );
OR
$comments_arr = unset( $comments_arr[0] );
$comments_arr = usort( $comments_arr );