web-dev-qa-db-de.com

$ reverse_top_level funktioniert laut Codex umgekehrt?

Der Codex für wp_list_comments besagt $reverse_top_level (boolean) (optional) Setting this to true will display the most recent comment first then going back in order.

Für mich ist es eigentlich umgekehrt. Die Option false zeigt den neuesten Kommentar als ersten und die Option true oder, wenn die Option überhaupt nicht verwendet wird, den letzten Kommentar an. Gleiches gilt, wenn die Kommentar-Paginierung verwendet wird oder nicht.

Ähnliches Verhalten gilt für die Option reverse_children. Wenn false oder gar nicht verwendet, ist das neueste Kind das erste.

Code, der zusammen mit WordPress 3.6.1 auf TurnKey verwendet wird

    $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);

Habe ich etwas verpasst oder ist es ein Fehler oder der Codex muss aktualisiert werden?

1
Radek

Die Standardeinstellung für reverse_top_level ist null. Schauen wir uns nun die Funktionsquelle an:

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

Wie Sie sehen, wird der Wert aus der Option comment_order übernommen. Und das ist entweder desc oder asc. Wenn der Wert desc ist, wird er auf true gesetzt. Nun ruft Walker_Comment , der extends Walker , die analysierten Argumente $r als letztes Argument für paged_walk() ab. Und diese Methode ist eine Methode der Klasse Walker. Schauen wir uns die Quelle an. Und dort können wir folgendes sehen:

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

Da emptyfalse gleich null oder ! isset auswertet, wird dieser Teil nicht ausgelöst. Das ist es.

1
kaiser