web-dev-qa-db-ja.com

1ページに5つのトップレベルのコメントがあるWP_Comment_Query?

私はWordPressの設定ページにあるオプションを複製しようとしています。

[x] 1ページに(5))トップレベルのコメントがあり、デフォルトで((1))ページが表示されているページにコメントを分割する

今、私は以下のコメントクエリを持っています、しかしそれはまた回答を数えて、5つのコメントを表示するだけです。

私が望む振る舞いは5つのトップレベルのコメントです、そしてそれらのトップレベルのコメントが持つかもしれないすべての返信。どうやってこれを達成できますか?

現在のコード

$args = array(
    'post_id' => $post_id,
    'type' => 'comment',
    'status' => 'approve',

    'number' => 5,
    'hierarchical' => 'threaded'
);

$comments_query = new WP_Comment_Query;
$comments = $comments_query->query($args);

出力

コメント5件

コメント1

  • コメントに返信1
  • コメントに返信1

コメント2

コメント3

望ましい出力

5トップレベルのコメントとそのすべての返信

コメント1

  • コメントに返信1
  • コメントに返信1

コメント2

コメント3

  • コメントに返信3
  • コメントに返信3
  • コメントに返信3

コメント4

コメント5

  • コメントに返信5
2
Swen

を更新しました

hierarchicalパラメーターは、コメントの結果にコメントの子孫を含めるかどうかを制御します。

インラインドキュメントから 我々はそれが以下の値を受け入れることを持っています:

  • 'threaded'はツリーを返し、各コメントの子はWP_Commentオブジェクトのchildrenプロパティに格納されます。
  • 'flat'は、見つかったコメントとその子のフラット配列を返します。
  • 子孫を除外する場合はfalse

それはまた言う

$fieldsが 'ids'または 'counts'の場合​​、パラメーターは無視されます(falseに強制されます)。

'threaded''flat'オプションは両方とも WP_Comment_Query::fill_descendants() メソッドを使用します。

各子コメントに対して別々にget_children()を呼び出すのではなく、一致したすべてのトップレベルコメントの子孫ツリーを取得するために1セットのクエリを実行します。

しかしthreadオプションには 追加スニペット があります。/ /はWP_Commentオブジェクトのadd_child()メソッドを使ってchildrenプロパティを構築します。


@Swenがコメントで述べたように、'threaded'オプションを使うべきです。

trueの値は実際には'flat'オプションと同じものになります。

3
birgire