web-dev-qa-db-fra.com

$ reverse_top_level fonctionne dans le sens opposé selon le Codex?

Le Codex pour wp_list_comments indique $reverse_top_level (boolean) (optional) Setting this to true will display the most recent comment first then going back in order.

Pour moi c'est en fait le contraire. L'option false affiche le dernier commentaire en tant que premier et l'option true ou, si l'option n'est pas utilisée du tout, le dernier. Il en va de même si la pagination des commentaires est utilisée ou non.

Un comportement similaire s'applique à l'option reverse_children. Si false ou pas du tout utilisé, le dernier enfant est le premier.

Code utilisé avec WordPress 3.6.1 sur TurnKey

    $comments =     get_comments(array(
        'number' => $get_comments_number_approved,
//          'offset' => 10,
        'post_id' => $post_id,
        'status' => 'approve' ,
        'orderby' => 'comment_date_gmt',
        'order' => 'DESC'
    ));

        wp_list_comments(array(
            'reverse_top_level' => false, //Show the latest comments at the top of the list
            'reverse_children' => false,
            'page' => $page_number,
            'per_page' => $comments_per_page,
//              'avatar_size'   => 16,
        ), $comments);

Ai-je oublié quelque chose ou s'agit-il d'un bogue ou le Codex doit-il être mis à jour?

1
Radek

La valeur par défaut pour reverse_top_level est null. Regardons maintenant la source de la fonction :

if ( null === $r['reverse_top_level'] )
    $r['reverse_top_level'] = ( 'desc' == get_option('comment_order') );

Comme vous pouvez le constater, il prend la valeur de l'option comment_order. Et c’est soit desc, soit asc. Si la valeur est desc, sa valeur sera true. Maintenant Walker_Comment , qui extends Walker , récupère les arguments analysés $r en dernier argument pour paged_walk(). Et cette méthode est une méthode de la classe Walker. Regardons sa source . Et on peut voir ce qui suit:

if ( ! empty( $args[0]['reverse_top_level'] ) )
    $elements = array_reverse( $elements );
    // does other stuff here

Comme empty évalue false égal à null ou ! isset, cette partie ne se déclenchera pas. C'est tout.

1
kaiser