J'essaie de reproduire l'option de la page de paramètres de WordPress qui dit:
[x] Découpez les commentaires en pages avec ((5)) commentaires de premier niveau par page et la ((première)) page affichée par défaut.
À l'heure actuelle, j'ai la requête de commentaire suivante, mais elle n'affiche que 5 commentaires, en comptant également les réponses.
Le comportement que je veux, c'est 5 commentaires de premier niveau et toutes les réponses que ces commentaires de haut niveau peuvent avoir. Comment puis-je y arriver?
$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);
Total de 5 commentaires
Commentaire 1
- Répondre au commentaire 1
- Répondre au commentaire 1
Commentaire 2
Commentaire 3
5 commentaires de haut niveau et toutes leurs réponses
Commentaire 1
- Répondre au commentaire 1
- Répondre au commentaire 1
Commentaire 2
Commentaire 3
- Répondre au commentaire 3
- Répondre au commentaire 3
- Répondre au commentaire 3
Commentaire 4
Commentaire 5
- Répondre au commentaire 5
Mise à jour
Le paramètre hierarchical
détermine s'il faut inclure les descendants de commentaires dans les résultats de commentaires.
À partir de inline docs nous avons qu'il accepte les valeurs suivantes:
'threaded'
renvoie une arborescence, les enfants de chaque commentaire étant stockés dans une propriétéchildren
sur l'objetWP_Comment
.'flat'
renvoie un tableau plat de commentaires trouvés ainsi que leurs enfants.false
pour laisser de côté les descendants.
Il dit aussi que
Le paramètre est ignoré (forcé à
false
) lorsque$fields
est 'ids' ou 'comptes'.
Les options 'threaded'
et 'flat'
utilisent toutes deux la méthode WP_Comment_Query::fill_descendants()
:
Au lieu d'appeler
get_children()
séparément sur chaque commentaire enfant, nous utilisons un seul ensemble de requêtes pour extraire les arbres descendants de tous les commentaires de niveau supérieur correspondants.
mais l'option threaded a supplémentaire snippet qui utilise la méthode add_child()
de l'objet WP_Comment
pour construire la propriété children
.
Comme @Swen l'a mentionné dans les commentaires, il convient d'utiliser l'option 'threaded'
.
Il semble que la valeur true
donne en fait la même chose que l'option 'flat'
.