web-dev-qa-db-ja.com

コーデックスによると$ reverse_top_levelは逆の方法で動作しますか?

wp_list_comments のコーデックスには$reverse_top_level (boolean) (optional) Setting this to true will display the most recent comment first then going back in order.があります。

私にとってはそれは実際には逆の方法です。 falseオプションは最新のコメントを最初のコメントとして表示し、trueオプションを使用するか、オプションをまったく使用しない場合は最後のコメントを表示します。コメントページネーションが使用されている場合も使用されていない場合も同様です。

同様の動作がreverse_childrenオプションにも適用されます。 falseかまったく使われていない場合は最新の子が最初の子です。

TurnKeyでWordPress 3.6.1と共に使用されるコード

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

見逃していませんか?それはバグですか?それともCodexを更新する必要がありますか?

1
Radek

reverse_top_levelのデフォルトはnullです。それでは、 関数のソース を見てみましょう。

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

ご覧のとおり、これはcomment_orderオプションからの値を取ります。そしてそれはdescascのどちらかです。値がdescの場合、それはtrueに設定されます。今 Walker_Comment 、これは extends Walker 、最後の引数として解析済み引数$rを取得paged_walk()のために。そしてそのメソッドはWalkerクラスのメソッドです。その ソース を見てみましょう。そして そこで私たちは 次のように見えることができます:

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

emptyfalseまたは! issetと等しいnullを評価するので、この部分は起動しません。それでおしまい。

1
kaiser